Ir para o conteúdo
darkangel_13

Como instanciar multiplos objetos

Mensagens Recomendadas

darkangel_13

Tou a fazer um exercicio em que básicamente tenho que ler um ficheiro cuja primeira linha tem o numero de objectos a ser criados, a minha duvida é como é que eu crio vários objectos ? visto que essa linha tanto pode dizer 5 como 6 como 2 como 1 ..

Cumps

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrotuga

Parece um exercício típico em que lês um inteiro do standard input w fazes um ciclo for usnado esse inteiro como condição de paragem.

Os obejctos podes por exemplo ir adicionando ao final de um ArrayList.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Basicamente tem que se adicionar contentores a um barco..

Cuja a leitura da primeira linha do ficheiro é o numero de contentores e as restantes referem-se respectivamente numa linha à capacidade livre e ao tipo de contentor ex:

3

3.4 2

4.5 1

A minha duvida é como é que eu vou criar os contentores ( tenho a classe já criada) de forma ciclica pois tanto podem ser 3 contentores como 10

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Classe Barco

// Numero maximo de contentores
public static final int MAX_CONTENTORES = 9;
// Numero maximo de mercadorias
public static final int MAX_MERCADORIAS = 30;
  /**
* Construtor
*
* @param in - de onde se leem os dados sobre os contentores
* numero de contentores e características de cada contentor.
* @requires in != null && ficheiro in deve ter o seguinte formato
* 1a linha - numero de contentores,
* 2a e restantes linhas - dados de um contentor:
* capacidade livre do contentor (em t) e tipo do contentor.
* @ensures  quantosContentores() <= MAX_CONTENTORES
*		   && quantasMercadorias() == 0 && peso() eh zero
*/
public Barco(BufferedReader in) throws IOException

  /**
* Quantos contentores ha neste barco.
*/
public int quantosContentores()
  /**
* Quantas mercadorias ha neste barco.
*/
public int quantasMercadorias()
  /**
* Peso total do carregamento.
*/
	public double peso()
  /**
* Carrega o barco.
* @param in - de onde se leem os dados sobre as mercadorias
*						sequencia de mercadorias e suas caracteristicas.
* @requires in != null && ficheiro in deve ter o seguinte formato
*						cada linha define uma mercadoria: peso (em t) e qualidade.
* @ensures  o barco esta carregado de acordo com o algoritmo.
*/
public void carrega(BufferedReader in) throws IOException
  /**
* Guardar os resultados do carregamento num ficheiro de texto.
*
* @param out - onde se guardam os resultados
* @requires out != null
* @ensures out esta preenchido da seguinte forma:
*  - Para cada contentor, uma linha contendo:
*	   numero do contentor, sequencia de mercadorias a carregar no contentor,
*	   capacidade livre do contentor e informacao sobre se esta cheio ou não.
*  - Uma linha contendo o peso total das mercadorias carregadas.
*  - Uma linha (ultima) contendo o numero total de mercadorias carregadas.
*/
public void guardaCarregamento(BufferedWriter out) throws IOException

Classe Contentor

// Peso maximo a carregar no contentor
 public static final double MAX_PESO = 100.0;
 // Matriz de compatibilidades:
 // 1's sao compatibilidades;
 // 0's sao incompatibilidades
 public static int[][] compatibilidade = { { 1, 0, 1 },
										   { 0, 1, 0 },
										   { 1, 0, 1 } };
  /* exemplo: a 1ª linha - {1, 0, 1} - indica que os contentores de tipo 1
* sao compativeis com as mercadorias das qualidades 1 e 3
*/
  /**
* Construtor
*
* @param numero - numero do contentor
* @param capInicial - capacidade livre (em t) do contentor
* @param tipo - tipo do contentor
* @requires numero >=1 && numero <=9 && capInicial >= 0.0 &&
*		 capInicial <= MAX_PESO && tipo >=1 && tipo <= 3
* @ensures numero() == numero && capLivre () == capInicial && tipo() ==
*		  tipo
*/
public Contentor(int numero, double capInicial, int tipo)
  /**
* A capacidade livre do contentor em toneladas.
*/
public double capLivre ()
  /**
* O tipo do contentor.  
*/
public int tipo()
  /**
* Quantas mercadorias ha no contentor.
*/
public int quantasMercadorias()
  /**
* Eh compativel com qualidade?
*
* @param qualidade - qualidade de mercadoria
*/
public boolean ehCompativel(int qualidade)
  /**
* Esta cheio?
*/
public boolean estaCheio()
  /**
* Actualiza contentor com mercadoria
*
* @param mercadoria - numero da mercadoria
* @param qualidade - qualidade da mercadoria
* @param peso - peso da mercadoria
* @requires ehCompativel(qualidade) && capLivre() >= peso
* @ensures capLivre() diminuiu peso unidades.
*/
public void carrega(int mercadoria, int qualidade, double peso)

  /**
* Representacao textual do contentor
*
* @return uma String contendo o numero do contentor, a sequencia de
*		 mercadorias a carregar no contentor, a capacidade livre,
*		 e se o contentor esta cheio ou nao.
*		 Exemplo:
*		 contentor 2: 1 2 4 6 7 8; cap livre = 3.0 / nao cheio
*/
public String toString()

Classe Run

import java.io.*;
/**
* Classe que permite testar as classes Barco.java e Contentor.java
* @author respicio
* @Date Marco 2011
*/

public class RunBarco {
 public static void main(String[] args) throws IOException {
BufferedReader contentores;
BufferedReader in;
BufferedWriter out;
Barco barco;
/* dados sobre os contentores do barco */
contentores = new BufferedReader( new FileReader("contentores.txt") );
/* dados sobre as mercadorias a carregar */
in		  = new BufferedReader( new FileReader("input.txt") );
out		 = new BufferedWriter( new FileWriter("output.txt") );
barco = new Barco(contentores); /* cria barco com os dados dos contentores*/
barco.carrega(in); /* le dados das mercadorias e determina carregamento */
barco.guardaCarregamento(out);
contentores.close();
in.close();
out.close();

 }
}

Obrigado pelas respostas !

Editado por darkangel_13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

1º - o número de linhas de código das classes apresentadas : zero

2º - o número de linhas de código relevante da leitura do ficheiro : zero

3º - nem vou comentar o construtor da classe Barco : o reader ???

4º -

o que tens de fazer é ler do ficheiro quantos objectos tens de instância e com um ciclo os instânciar


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
darkangel_13

Essas classes não fui eu que fiz, foi o que me foi dado ..

public Barco(BufferedReader in) throws IOException
//Aqui criei um objecto scanner que recebe o in
//Li o ficheiro para uma matriz
//Agora como faço para criar o numero de objectos necessarios ? ou seja o numero de contentores

Mas eu preciso de dar nomes aos contentores certo? para poder instâncias, é possível fazer algo do genero

Contentor $i =new Contentor(..);

em que i assuma varios valores ?Assim poderia fazer com um ciclo

Editado por darkangel_13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.