boa tarde pessoal estou precisando de uma força to fazendo esse projeto ai mas nao estou conseguindo add na minha array nao esta dando erro mas so mostra um carro adicionado e que é ao ultimo vejam ai e falam oq eu estou fazendo de errado flw
/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package auladia28022010;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
do{
//menu
System.out.println("=== Cadastramento de carro === “);
System.out.println(”== Escolha uma opção abaixo == ");
System.out.println(“1 - Cadastrar carro.”);
System.out.println(“2 - Visualiza todos os carros.”);
System.out.println(“3 - SAIR.”);
System.out.print("Informe sua Opção >-> ");
escolha = new Scanner(System.in);
opcao = escolha.nextInt();
switch (opcao) {
case (1):{
Scanner scan = new Scanner (System.in);
System.out.print("Entre com a Marca : ");
r.setmarca(scan.next());
System.out.print("Entre com a Chassi da marca : " );
r.setchassi (scan.nextInt());
System.out.print("Entre com a Ano de Fabricação : ");
r.setanofabricacao(scan.nextInt());
System.out.print("Entre com a Modelo : ");
r.setanodomodelo (scan.nextInt());
carros.add(r);
break;
}
case (2):{
for (int i = 0; i < carros.size(); i++) {
System.out.println("Marca :"+carros.get(i).getmarca());
System.out.println("Chassi :"+carros.get(i).getchassi());
System.out.println("Ano de Fabricação :"+carros.get(i).getanofabricacao());
System.out.println("Ano Modelo :"+carros.get(i).getanodomodelo());
System.out.println("===============================");
break;
}
}
case (3):{
System.out.println("****PROGRAMA FINALIZADO****");
break;
}
}
}while (opcao!=3);
}
}
preciso disso resolvido ate quarta se poder ser um pouco rapido agredeço desde ja .
1 - use a tag code.
Quanto a sua duvida, voce nao pode ficar adicionando os carros usando a mesma referencia a um carro entendeu. Ou seja, pra cada carro voce tem que ter um objeto carro. E nao ficar “reaproveitando uma mesma referencia” pq quando voce passar um add para o array voce esta apenas passando a referencia. Dessa forma, quando voce altera qualquer coisa no seu objeto carro as outras referencias simplemente fazem o seu papel, que é apontar pra o objeto alterado.
Traduzindo em miúdos, voce tem que mandar a sua refencia para carro - no seu caso, de nome r - apontar para um new carro toda vez que for adicionar outro na lista. Ai sim voce adiciona sem problemas.
Entendeu? Qualquer coisa da um grito aew.
Não compreendi teria como fazer um exemplo ae!?
Onde eu tiver modificado, coloquei um comentario escrito com MODIFICACAO.
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package auladia28022010;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*
Tente entender porque eu fiz isso e voce vai entender melhor os conceitos de refencia e objeto. Se nao entender pode dar o toque que eu vejo outra forma de explicar.
edit: Veja dessa forma: Suponha que voce tenha um ponteiro de nome r que aponta para um carro, ok? Ai voce pega esse ponteiro e dá um add em um array. Blz, o que o metodo add vai fazer? Vai pegar o seu ponteiro r e criar uma copia, ou seja, ele vai criar um ponteiro para o mesmo carro. Ai voce dá outro add com o mesmo ponteiro r. Ele vai fazer a mesma coisa. Ai voce faz uma alteracao direta no seu objeto carro, ou seja r.setmarca(“sua marca”) por exemplo. Blz, como voce tinha duas referencias para o mesmo objeto carro no seu array, os dois continuarao apontando pra esse mesmo carro, que agora tem uma marca.
Obrigado pela ajuda ai, mas so que ele na imprime os carros q eu cadastrei e sim so o primeiro !!! pq!
Olha nao entendi muito bem o pq eu tenho q usar daquele jeito e tambem outro problema e q ele nao imprime todos os dados e sim so um carro entende nao sei pq ???
Voce ja leu a minha ultima mensagem? Eu modifiquei o seu codigo, ja deu uma olhada nas modificacoes que eu fiz? Onde eu tiver modificado coloquei um comentario “//MODIFICACAO”. Dê uma olhada la…
Não irmaozinho…teste a modificacao que eu fiz que vai imprimir todos, tenha fé;
Dá uma olhada no edit que eu fiz no meu penultimo post que eu tentei explicar melhor esse negocio das referencias.
olha eu fiz a alteraçao sim li oq vc escreveu so que no meu esta so aparecendo o primeiro carro que eu cadastrei com as modificações que vc falo !!
Eu sei q babozera mas quando eu usei um List ArrayList o nome da minha List ficava em verde agora nao ta ficando isso nao quer dizer q eu nao estou add na minha List ?
Irmaozinho, achei o seu outro problema. Seu break deve ficar fora do laço for né irmaozinho? Faça isso e pronto…
o mano valeu pela ajuda obrigado por tudo ai e desculpa a minha burrice ae ta vc tem msn manda ai mano pra gente conversar ai fica melhor tem como!!!
Vou lhe passar uma mensagem particular com o msn, mas eu adianto logo que eu nao entro muito. Vou entrar agora pra tirar qualquer outra duvida que voce tenha mas entra logo que eu vou sair em 10min no maximo. Vlw.