gilmaslima 25 de fev. de 2011 1 like
primeiramente use a tag CODE
import java.util.ArrayList ;
public class NewMain {
private String nome = "" ;
private int idade = 0 ;
public void setnome ( String tnome ){
this . nome = tnome ;
}
public void setidade ( int tidade ){
this . idade = tidade ;
}
public String getnome (){
return this . nome ;
}
public int getidade (){
return this . idade ;
}
public static void main ( String [] args ) {
NewMain n = new NewMain ();
ArrayList < NewMain > a = new ArrayList < NewMain > ();
n . setidade ( 20 );
n . setnome ( "Teste 1" );
a . add ( n );
for ( int i = 0 ; i < a . size (); i ++ ) {
System . out . println ( a . get ( i ). getidade ());
System . out . println ( a . get ( i ). getnome ());
}
n . setidade ( 30 );
n . setnome ( "Teste 02" );
a . add ( n );
for ( int i = 0 ; i < a . size (); i ++ ) {
System . out . println ( a . get ( i ). getidade ());
System . out . println ( a . get ( i ). getnome ());
}
}
}
Está acontecendo isso, pq vc está adicionando o mesmo objeto sempre ao seu List
quando vc faz:
n . setidade ( 20 );
n . setnome ( "Teste 1" );
A idade é int, por isso, altera, mas sua String nome não pq é um objeto e sua intancia de NewMain é a mesma.
Faça um teste criando uma nova instancia(objeto) de NewMain.
flw!
fabiot 25 de fev. de 2011
Gilmaslima, obrigado pela ajuda.
Acho q entendi o q vc me falou e fiz essa alteração:
import java.util.ArrayList ;
public class NewMain {
private String nome = "" ;
private int idade = 0 ;
public void setnome ( String tnome ){
this . nome = tnome ;
}
public void setidade ( int tidade ){
this . idade = tidade ;
}
public String getnome (){
return this . nome ;
}
public int getidade (){
return this . idade ;
}
public static void main ( String [] args ) {
NewMain n = new NewMain ();
NewMain n1 = new NewMain ();
ArrayList < NewMain > a = new ArrayList < NewMain > ();
n . setidade ( 20 );
n . setnome ( "Teste 1" );
a . add ( n );
for ( int i = 0 ; i < a . size (); i ++ ) {
System . out . println ( a . get ( i ). getidade ());
System . out . println ( a . get ( i ). getnome ());
}
n1 . setidade ( 30 );
n1 . setnome ( "Teste 02" );
a . add ( n1 );
for ( int i = 0 ; i < a . size (); i ++ ) {
System . out . println ( a . get ( i ). getidade ());
System . out . println ( a . get ( i ). getnome ());
}
}
o resultado foi o q eu queria:
20
Teste 1
20
Teste 1
30
Teste 02
Mas assim, caso eu queira add 100 posições no arraylist vou ter q criar:
NewMain n1 = new NewMain ();
.
.
.
NewMain n100 = new NewMain ();
Como resolvo isso ???
Obrigado,
Fabio
geraldo.vec 25 de fev. de 2011
Você pode fazer algo mais ou menos assim:
for (int i = 0 ; i < 100 ; i++) {
NewMain n = new NewMain();
n.setidade(10);
n.setnome("teste " + i)
a.add(n);
}
gilmaslima 25 de fev. de 2011
geraldo.vec:
Você pode fazer algo mais ou menos assim:
for (int i = 0 ; i < 100 ; i++) {
NewMain n = new NewMain();
n.setidade(10);
n.setnome("teste " + i)
a.add(n);
}
Para isso funcionar precisa declarar fora do loop:
NewMain n = null;
for (int i = 0 ; i < 100 ; i++) {
n = new NewMain();
n.setidade(10);
n.setnome("teste " + i)
a.add(n);
}
geraldo.vec 25 de fev. de 2011
Porque precisa ser fora do loop?
fabiot 25 de fev. de 2011
Pessoal, boa tarde.
Consegui fazer utilizando o Loop !!!
Muito obrigado pela ajuda.
Fabio
kenneth 26 de fev. de 2011
Coloca [Resolvido] no titulo.