darkangel_13 0 Denunciar mensagem Publicado 30 de Março de 2013 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 27 Denunciar mensagem Publicado 30 de Março de 2013 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 0 Denunciar mensagem Publicado 30 de Março de 2013 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
HappyHippyHippo 1185 Denunciar mensagem Publicado 31 de Março de 2013 apresenta o código que já tens IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
darkangel_13 0 Denunciar mensagem Publicado 31 de Março de 2013 (editado) 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 31 de Março de 2013 por darkangel_13 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
HappyHippyHippo 1185 Denunciar mensagem Publicado 31 de Março de 2013 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 Portugol Plus Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites
darkangel_13 0 Denunciar mensagem Publicado 1 de Abril de 2013 (editado) 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 1 de Abril de 2013 por darkangel_13 Partilhar esta mensagem Ligação para a mensagem Partilhar noutros sites