ArrayList de objetos acesando
Preciso acessar um atributo dentro do meu objeto que está dentro de um arrayList
Do jeito que tento não funciona, pois ele retorna um objeto quando deveria retornar inteiro
O erro acontece na ultima linha, dentro do for
segue abaixo o cod
Do jeito que tento não funciona, pois ele retorna um objeto quando deveria retornar inteiro
O erro acontece na ultima linha, dentro do for
segue abaixo o cod
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
ArrayList objetos = new ArrayList();
Posição nova = new Posição();
int cont = 1;
String opcao = "S";
while (opcao.equals("S") || opcao.equals("sim") || opcao.equals("s")) {
System.out.println("Informe algo para guardar");
nova.setConteudo(ler.next());
nova.setSituacaoAnte(false);
nova.setSituacaoPost(false);
nova.setPosicao(cont);
nova.setSituacaoMinha(true);
cont++;
objetos.add(nova);
System.out.println("Deseja contiinuar? S/N");
opcao = ler.next();
}
for(int j=0; j<= objetos.size(); j++){
System.out.println("conteudo: " + objetos.getClass(nova.getConteudo()));
}
Kelvin Eger
Curtidas 0
Melhor post
Wazowski
27/03/2017
Algumas dicas:
- Crie arraylist com o tipo da classe dos objetos que ele vai possuir. Ai quando chamar o metodos get() para pegar o objeto, ja vai ser retornado o seu tipo de objeto. Ex:
- Evite usar ç e acento no nome das tuas variaveis. (só por boas praticas de programação)
E temos dois problemas graves pra execução do teu código.
O primeiro é que tu ta usando sempre o mesmo objeto, cada vez que tu chama o setConteudo e adiciona na lista, tu ta adicionado o mesmo objeto e alterando o conteúdo dele, ou seja, tu adiciona o objeto na lista na posição 1 com o conteúdo X, quando tu adicionar o segundo com conteúdo Y, o valor da primeira e da segunda posição vão valer Y, recomendo dar uma olhada sobre referencia de objetos. Pra resolver isso tu deve criar o teu objeto dentro do teu while e sempre adicionar um novo objeto na lista: Ex
E o segundo motivo: tua ultima linha não faz muito sentido... tu ta chamando getClass, o metodo correto é get(index). Acredito que seria algo, tipo:
Valeu
- Crie arraylist com o tipo da classe dos objetos que ele vai possuir. Ai quando chamar o metodos get() para pegar o objeto, ja vai ser retornado o seu tipo de objeto. Ex:
Arraylist<Posicao> objetos = new ArrayList<>();
- Evite usar ç e acento no nome das tuas variaveis. (só por boas praticas de programação)
E temos dois problemas graves pra execução do teu código.
O primeiro é que tu ta usando sempre o mesmo objeto, cada vez que tu chama o setConteudo e adiciona na lista, tu ta adicionado o mesmo objeto e alterando o conteúdo dele, ou seja, tu adiciona o objeto na lista na posição 1 com o conteúdo X, quando tu adicionar o segundo com conteúdo Y, o valor da primeira e da segunda posição vão valer Y, recomendo dar uma olhada sobre referencia de objetos. Pra resolver isso tu deve criar o teu objeto dentro do teu while e sempre adicionar um novo objeto na lista: Ex
while (opcao.equals("S") || opcao.equals("sim") || opcao.equals("s")) {
Posição nova = new Posição();
System.out.println("Informe algo para guardar");
nova.setConteudo(ler.next());
nova.setSituacaoAnte(false);
nova.setSituacaoPost(false);
nova.setPosicao(cont);
nova.setSituacaoMinha(true);
cont++;
objetos.add(nova);
System.out.println("Deseja contiinuar? S/N");
opcao = ler.next();
}
E o segundo motivo: tua ultima linha não faz muito sentido... tu ta chamando getClass, o metodo correto é get(index). Acredito que seria algo, tipo:
for(int j=0; j<= objetos.size(); j++){
System.out.println("conteudo: " + objetos.get(j).getConteudo());
}
Valeu
GOSTEI 1
Mais Respostas
Wazowski
27/03/2017
Outro detalhe: O ultimo for vai estourar na ultimo posição do array, deve ser usado < e não <= no contador do loop
for(int j=0; j < objetos.size(); j++){
System.out.println("conteudo: " + objetos.get(j).getConteudo());
}
GOSTEI 1