Meu código ficou assim (esta classe é para testar):
[i]import java.util.Scanner;
public class TesteAluno {
publicstaticvoidmain(String[]args){Alunoaluno1=newAluno();aluno1.setRa(1);aluno1.setNome("Thiago");aluno1.setMatriculado(true);Scannerleitor=newScanner(System.in);Alunoaluno2=newAluno();System.out.println("Digite o RA do aluno: ");intraAluno=leitor.nextInt();leitor.nextLine();System.out.println("Digite o Nome do aluno: ");StringnomeAluno=leitor.nextLine();leitor.nextLine();System.out.println("Cadastrar outro Aluno (S/N): ");Stringresp=leitor.nextLine();if(resp=="S"){aluno2.setMatriculado(true);}else{aluno2.setMatriculado(false);}System.out.println("\t RA do Aluno 1: "+aluno1.getRa());System.out.println("\n\t Nome do Aluno 1: "+aluno1.getNome());}
}[/i]
Quando rodo este programinha ele deixa o usuário entrar com RA, Nome. Só que quando chega na última parte, da pergunta digito S de ‘Sim’ e aparece os dados do aluno 1.
Como faço para quando eu digitar ‘S’ aparecer novamente para eu digitar os dados de aluno?
Use um laço de repetição um “while” por exemplo com uma condicional.
Quando for comparar valor de string use sempre “equals” e não “==”, pois este último compara se a variável de referência “aponta” para mesmo valor de outra string.
Se não ficou claro posso exemplificar é só falar.
mi.rodrigues
Quando for publicar linhas de código, utilize a tag code para facilitar a vida do pessoal aqui! Fica mais fácil de ajudar!
A princípio o while resolve seu problema. Porem caso após a inclusão dos dados do 2° aluno o usuário quiser cadastrar mais algum aluno os dados serão sobrescritos.
Uma das possíveis soluções é aumentar um pouco o escopo do seu exercício, não limitando a quantidade de alunos que pode ser cadastrados.
Exemplo:
Alunoaluno=newAluno();ArrayList<Aluno>listaAlunos=newArrayList<Alunos>();Stringresp="";while(resp!='S'){System.out.println("Digite o RA do aluno: ");aluno.setRA(leitor.nextInt());leitor.nextLine();System.out.println("Digite o Nome do aluno: ");aluno.setNome(leitor.nextLine());leitor.nextLine();listaAlunos.add(aluno);System.out.println("Cadastrar outro Aluno (S/N): ");resp=leitor.nextLine();}System.out.println("Fim");
Abs!
T
thedark.10013
Bom dia.
Esse array não entendi, creio que ainda não cheguei/estudei nessa questão.
freakazoid
thedark.10013:
Bom dia.
Esse array não entendi, creio que ainda não cheguei/estudei nessa questão.
ArrayList é uma classe que faz implementação da interface List. Esta classe fornece métodos para manipular o tamanho da matriz que é usada internamente para armazenar uma lista. Podemos dizer bruscamente que é aproximadamente equivalente um vetor.
Desta formar você cadastra quantos objetos forem necessário sem se preocupar em dimensionar o vetor. Caso não queria fazer usando ArrayList, mude, crie um vetor do tipo Aluno.
//um vetor para armazenar 5 objetos do tipo Aluno [0-4]Aluno[]listaAlunos=newAluno[5];listaAlunos[0]=newAluno("Paulinho");listaAlunos[1]=newAluno("Ralf");listaAlunos[2]=newAluno("Pato");listaAlunos[3]=newAluno("Shaike");listaAlunos[4]=newAluno("Romarinho");
Caso tenha dificuldade post o código aqui.
Abs!
T
thedark.10013
Neste caso vc esta especificando 5 alunos.
Aqui neste caso seria um ‘vetor dinâmico’, como ficaria a linha?
freakazoid
thedark.10013:
Neste caso vc esta especificando 5 alunos.
Aqui neste caso seria um ‘vetor dinâmico’, como ficaria a linha?
Ficaria como no primeiro exemplo, onde usamo o método add.
listaAlunos.add(aluno);
freakazoid
// Cria seu objetoAlunoaluno=newAluno();// Cria a lista dinâmicaArrayList<Aluno>listaAlunos=newArrayList<Alunos>();Stringresp="";//Laço de repetiçãowhile(resp!="S"){System.out.println("Digite o RA do aluno: ");aluno.setRA(leitor.nextInt());leitor.nextLine();System.out.println("Digite o Nome do aluno: ");aluno.setNome(leitor.nextLine());leitor.nextLine();// adiciona o objeto aluno na lista listaAlunos.add(aluno);System.out.println("Cadastrar outro Aluno (S/N): ");resp=leitor.nextLine();}System.out.println("Fim");
Não precisa se preocupar em criar vários objetos do tipo Aluno para fazer o cadastro, pois neste caso ele é apenas um “coringa” para que possamos adicionar um objeto no array.
T
thedark.10013
da um erro de ‘ArrayList cannot be resolved to a type’?
freakazoid
Exemplo:
publicclassTesteLoko{publicstaticvoidmain(String[]args){Scannerleitor=newScanner(System.in);Stringresp="";Alunoaluno;ArrayList<Aluno>listaAlunos=newArrayList<Aluno>();while(!resp.equals("N")){aluno=newAluno();System.out.print("Digite o RA do aluno: ");aluno.setRa(leitor.nextInt());leitor.nextLine();System.out.print("Digite o Nome do aluno: ");aluno.setNome(leitor.nextLine());leitor.nextLine();//AdicionalistaAlunos.add(aluno);System.out.print("Cadastrar outro Aluno (S/N)?: ");resp=leitor.nextLine();aluno=null;}//ExibindoSystem.out.println("Aluno(s) Cadastrado(s):");for(Alunoaluno2:listaAlunos){System.out.println(aluno2.getNome());}}}
Abs!
T
thedark.10013
Certo, mas quando executo da esta mensagem:
‘ArrayList cannot be resolved to a type’
freakazoid
thedark.10013:
Certo, mas quando executo da esta mensagem:
‘ArrayList cannot be resolved to a type’
Provavelmente esse erro dá quando vc esta tentando usar o add, correto? De qualquer forma, o exemplo que postei foi feito em cima do bean que vc postou, é só copiar e colar na sua classe de teste que deve funcionar com certeza.
Se o erro persistir é só dar um toque.
Abs!
T
thedark.10013
Deu certo, estava faltando a biblioteca. rs
Então quando aperto S ele deixa eu digitar novamente, deu certo, mas quando eu aperto N em vez de exibir a lista ja cadastrada e encerrar ele continua.
freakazoid
Use o ‘N’ ou invés de ‘n’.
Para para funcionar com os dois é só alterar a condição do while para:
while(!resp.toUpperCase().equals("N")){
Abs!
T
thedark.10013
N maiusculo, muito detalhes…hehe Valew cara, qualquer coisa eu te procuro.
T
thedark.10013
Esse comando ‘toUpperCase’ o que é?
Eu estava tentando colocar or ||
freakazoid
thedark.10013:
Esse comando ‘toUpperCase’ o que é?
Eu estava tentando colocar or ||
Da pra fazer com or, tipo ou ‘n’ ou ‘N’, porem desta forma estamos fazendo implicitamente dois ifs. O toUpperCase transforma todo conteúdo da String e passa pra maiúsculo, dessa forma eu faço um verificação só.