caxinaswin Posted May 19, 2015 Report Share Posted May 19, 2015 (edited) Muito boa tarde, tenho um problema na minha aplicação que vou tentar explicar: tenho 3 classes que estão interligadas(Bloco,Sala,Antena) 1 bloco tem um ArrayList de salas e 1 sala tem um ArrayList de Antenas. Aqui estão as classes!! //classes public class Bloco { private String nomeBloco; private ArrayList<Sala> salas = new ArrayList<Sala>(); public Bloco(String nomeBloco, ArrayList<Sala> salas) { super(); this.nomeBloco = nomeBloco; this.salas = salas; } public Bloco(String nomeBloco) { super(); this.nomeBloco = nomeBloco; } public String getNomeBloco() { return nomeBloco; } public void setNomeBloco(String nomeBloco) { this.nomeBloco = nomeBloco; } public ArrayList<Sala> getSalas() { return salas; } public void setSalas(ArrayList<Sala> salas) { this.salas = salas; } public class Sala { private String numeroSala; public static ArrayList<Antena> antenas = new ArrayList<Antena>(); public Sala(String numeroSala) { super(); this.numeroSala = numeroSala; } public String getNumeroSala() { return numeroSala; } public void setNumeroSala(String numeroSala) { this.numeroSala = numeroSala; } public static ArrayList<Antena> getAntenas() { return antenas; } public static void setAntenas(ArrayList<Antena> antenas) { Sala.antenas = antenas; } } public class Antena { private int numeroAntena; private boolean estado; public Antena(int numeroAntena,boolean estado) { this.numeroAntena = numeroAntena; this.estado = estado; } public Antena() { } public int getNumeroAntena() { return numeroAntena; } public void setNumeroAntena(int numeroAntena) { this.numeroAntena = numeroAntena; } public boolean isEstado() { return estado; } public void setEstado(boolean estado) { this.estado = estado; } } Basicamente o que eu pretendo é adicionar uma Antena, tenho aqui o código respetivo á adicao da Antena, mas o problema é que ele em vez de me adicionar 1 antena adiciona me as antenas respetivas ás salas que eu tenho ou seja se tiver 4 salas tenho 4 Antenas, eu sei que deve ser algum problema com o loop mas já andei ás voltas e não consigo encontrar o problema vou postar aqui o que eu fiz: /** * Guarda dados da Antena no ArrayList * @param nomeBloco nome do Bloco a guardar * @param numeroSala numero da sala a guardar * @param estado estado a guardar */ public static void guardarAntena(String nomeBloco,String numeroSala,boolean estado) { int numero = 1; for(int i = 0;i<blocos.size();i++) { Bloco bloco = blocos.get(i); ArrayList<Sala> salas = bloco.getSalas(); if(nomeBloco.equals(bloco.getNomeBloco())) { for(int j = 0;j<salas.size();j++) { Sala sala = salas.get(j); if((sala.getNumeroSala().equals(numeroSala))) { sala.getAntenas().add(new Antena(numero,estado)); } } } } } Espero que me possam ajudar Obrigado (: Edited May 19, 2015 by apocsantos geshi Link to comment Share on other sites More sharing options...
siul72 Posted May 20, 2015 Report Share Posted May 20, 2015 (edited) Boas, antes demais, para que seja mais claro, deves alterar os ciclos for por for each ou itilizar um iterator. Normalmente prefiro o for each, exemplo: for(String object: list){ System.out.println(object) } Aqui segue uma ajuda: public static void guardarAntena(String nomeBloco,String numeroSala,boolean estado){ int numero = 1; for(Bloco bloco : blocos){ if(nomeBloco.equals(bloco.getNomeBloco())){ ArrayList<Sala> salas = bloco.getSalas(); for(Sala sala : salas){ if((sala.getNumeroSala().equals(numeroSala))){ sala.getAntenas().add(new Antena(numero,estado)); } } } } } Finalmente se queres que as antenas tenham um numero unico, nao podes utilizar o valor int numero = 1; hardcoded.... Edited May 20, 2015 by apocsantos geshi Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now