for(int i = 0; i<5; i++){
Aluno a1 = new Aluno();
a1.setNome(scanner.nextLine());//ja importei o scanner tudo certinho
a1.setIdade(scanenr.nextInt());
}
mass… toda vez que o laço acontecer novamente ele vai sobreescrever o a1 e nao é isso que eu queria, eu queria que ele criasse um outro objeto independente e eu pudesse adicionar o Nome e a Idade… tem como ?
De forma que se consiga gerar as varáveis de referência com nomes diferentes, tenho dúvidas quanto a isso tb
Não é possível dar bold no código, tem como destacar de outra forma?
carlos.e.a
Oxe pra que ele precisa de “nomes de referencias bonitinhos?”
Usa um arrayList como jah falaram e tah resolvido…quando quiser acessar as referencias pede pro array colocando o numero da referencia do objeto.
Rafael_Mesquita_Mour
Tem sim amigo, eu estava com a mesma dúvida que você, pois a aplicação que eu estou fazendo tinha basicamente a mesma necessidade, ou seja, criar objetos dinamicamente.
Faça o seguinte:
// Declare e inicialize um ArrayList de Objetos AlunoArrayList<Aluno>alunos=newArrayList<Aluno>();// Aqui é o seu laço FOR normalmentefor(inti=0;i<=5;i++){// Seu Objeto aluno sendo criadoAlunoa1=newAluno();// Aluno recebendo o nome;a1.setName(Scanner.nextLine());// Aluno recebendo a idadea1.setIdade(Scanner.nextInt());// Aqui é a parte importante, insira esse objeto aluno na ArrayListalunos.add(a1);// E depois retire a referência da variável a1, deixando-a como null,// ou seja, ela não estará referenciando a nenhum objeto Aluno,// assim você poderá inserir um outro objeto Aluno a elaa1=null;//Fim do laço FOR}// Depois se você quiser saber o que há dentro da ArrayList, você terá// que fazer um outro laço FOR, ex:for(Alunoa:alunos){//Aqui você estará imprimindo, o nome e a idade de cada objeto Aluno, //ou seja de cada objeto Aluno que você tiver na ArrayList alunosSystem.out.println("O aluno "+a.getName()+" têm "+a.getIdade()+" anos");//Fim do laço FOR}
Espero ter ajudado ^^
[]´s
ViniGodoy
O código da linha 23 é unútil, Rafael. Se vc deixar sem ele, quando a variável a1 sair de escopo ou for reinicializada, outro objeto ocupar seu lugar, tenha vc setado para null ou não.
Rafael_Mesquita_Mour
Maravilha… mas ViniGodoy, se ele retirar a linha 23 desse código, o mesmo como um todo irá ajudá-lo com o que ele precisa certo?
Retirei essa linha também do meu código aqui e funcionou, provavelmente irá ajudá-lo também!
Sim, ela é inútil, pode retirar sem medo. Ela faz o que o java fará sozinho, caso você a retire.
gRoOve
Deveria setar como null, caso fosse um objeto que desejasse habilitar para o Garbage collector, como o Vini disse, o próprio escopo e/ou uma nova referência faz com que a variável seja destruída da pilha