bem tenho que criar um programa…ja criei pacotes e classes…e declarei 2 vetores para armazenar nomes e telefones
agora …tenho dúvidas… Como faço para armazenar no vetor até o usuário digitar "fim"?
vejam como inicieii …se tiver errado me corrija por favor…obs:fiz vetor com os nomes por enquanto…
Stringnome[]=newString[3];Stringtelefones[]=newString[3];nome[0]=newString('Joao');nome[1]=newString('Maria');nome[2]=newString('Marcos');// exibição do conteúdo do vetorfor(inti=0;i<3;i++){System.out.println(nome[i]);}
entendi…mas ta dando erro…pra que serve esse equals?
edufera10
olha as aspas…
nome[0] = new String("João");
nome[1] = new String("Maria");
nome[2] = new String("Marcos");
gisa_screen
as aspas estao corretas…o que quero saber onde encaixo esse for?
se pode me mandar seu emais pra eu poder tirar duvidas com vc?
CrOnNoS
o equals serve para comparar dois objetos. Lembre-se que "String" em java é um objeto e não uma variável primária. comparar uma String nomeUm com uma nomeDois fazendo "nomeUm == nomeDois" não dará certo. Por isso o colega em cima usou o método equals para comparar o objeto 'nome' com um objeto que resulta da String "fim".
Esse for é o que iria executar a leitura dos nomes.
Se você estiver usando um objeto Scanner "input" para ler os dados, ficaria algo como:
Mas a instrução break; (que nesse caso pararia a execução do for) não é recomendada para usar em casos como esse que prejuticaria a legibilidade do código.
Seria melhor algo como:
/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubString[]endereco=newString[3];String[]nome=newString[3];String[]telefone=newString[3];intx;inty;inti;intz=0;y=0;x=0;Scannerteclado1=newScanner(System.in);Scannerteclado2=newScanner(System.in);Scannerteclado3=newScanner(System.in);for(i=0;i<4;i=i+1){System.out.println("Digite seu nome");nome[x]=teclado1.nextLine();System.out.println("Agora digite seu telefone !!");telefone[y]=teclado2.nextLine();System.out.println("digite seu endereço valeu?");endereco[z]=teclado3.nextLine();}}
}
CrOnNoS
1º Lembre-se de usar a tag Code para colar seu código
O for ficaria no lugar do seu for
Usando o segundo for por exemplo, ficaria:
publicstaticvoidmain(String[]args){// TODO Auto-generated method stubString[]endereco=newString[3];String[]nome=newString[3];String[]telefone=newString[3];StringnomeAtual="";intx;inty;inti=0;Scannerteclado1=newScanner(System.in);Scannerteclado2=newScanner(System.in);Scannerteclado3=newScanner(System.in);for(i=0;!nomeAtual.equals("fim");i++){System.out.println("Digite seu nome");nomeAtual=teclado1.nextLine();if(!nomeAtual.equals("fim")){nome[i]=nomeAtual;System.out.println("Agora digite seu telefone !!");telefone[i]=teclado2.nextLine();System.out.println("digite seu endereço valeu?");endereco[i]=teclado3.nextLine();}}}
Mas repare que como seu vetor só tem 3 componentes, se tentar ler mais que isso o programa vai gerar uma excessão.
Para evitar isso você poderia talvez manter a condição do seu for junto:
for(i=0; !nomeAtual.equals("fim") && i < 3; i++) {
gisa_screen
amigo obrigado…
ainda tenho que apresentar no console uma mensagem “nomes digitado”;
E tbm tem q ter um tratamento de erro para a exceção se caso o usuário digitar mais de tres nomes…caso o problema ocorra o programa deverá exibir a mensagem “Vetor Cheio”
tenho que usar um try e catch? para resolver ?
vou tentar…
CrOnNoS
Usar try e catch é uma forma (deixando a exceção ocorrer), mas nesse caso não é realmente necessário (evitando que ela aconteça. Obs: o último for por exemplo já evitava).
Well, se tiver alguma outra dúvida tentando resolver esses dois problemas sinta-se livre para perguntar.
gisa_screen
eu usei um if assim para o tratamento de erro …caso o usuário digite mas de tres nomes
O equals diferente do “==” . Compara a “equivalencia” e não igualdade.
gisa_screen
ah sim ja tinha resolvido e coloquei parecido...com o seu código acima...
só que agora tenho uma dúvida...porque só fiz uma condição pro nome ...quando o usuário digitar"fim" dai sai...e pro telefone tenho que fazer o mesma condição? pois só quando o usuario digita "fim" no nome que da um break...
veja como ficou meu código...
publicstaticvoidmain(String[]args){// TODO Auto-generated method stubString[]nome=newString[3];String[]telefone=newString[3];StringnomeAtual="";StringtelefoneAtual="";intx=0;inty=0;inti=0;Scannerteclado1=newScanner(System.in);Scannerteclado2=newScanner(System.in);for(i=1;!nomeAtual.equals("fim")&&i<=3;i++){System.out.println("Digite seu nome");nomeAtual=teclado1.nextLine();if(!nomeAtual.equals("fim")){nome[x]=nomeAtual;}}for(i=1;!telefoneAtual.equals("fim")&&i<=3;i++){System.out.println("Agora digite seu telefone !!");telefoneAtual=teclado2.nextLine();if(!telefoneAtual.equals("fim")){telefone[y]=telefoneAtual;}}if(i>3){System.out.println("vetor Cheio");}