[RESOLVIDO] Por que o meu programa ignora o meu FOR ?
9 respostas
Geralt_Marston
Boa tarde! Estou com um problema no FOR e já é o segundo programa que da esse erro. Gostaria de saber o que eu estou fazendo de errado. O que acontece é o seguinte: o programa lê o nome, matrícula e as 4 notas do primeiro aluno, porém no momento em que ele vai ler o nome, matrícula e as 4 notas do segundo aluno ele simplesmente pula o nome e pede só a matrícula e as 4 notas. Por que ele faz isso? O que eu estou fazendo de errado?
for(inti=0;i<5;++i){System.out.print("Informe o nome do "+(i+1)+"º aluno: ");StringnomeAluno=input.nextLine();System.out.print("Informe o número da matrícula do "+(i+1)+"º aluno: ");intnumMatricula=input.nextInt();double[]notas=newdouble[4];for(intj=0;j<4;++j){System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");notas[j]=input.nextDouble();}Alunoaluno=newAluno();aluno.setNome(nomeAluno);aluno.setMatricula(numMatricula);aluno.setNotas(notas);alunos[i]=aluno;}
Eu fiz um outra programa de uma agenda onde dentro dessa agenda existem 2 contatos e em cada contato existe um nome, email e telefone e na hora de ler dentro de um FOR o programa pula o nome do primeiro contato e já vai direto para o email e telefone e no segundo contato ele lê tudo certinho, porém no primeiro contato ele só lê a partir do email.
Espero que não tenha ficado muito confuso de entender o meu problema. Valeu!
Prezado @Geralt_Marston
Peguei apenas o seu laço mostrando o System.out.print e executei e ele mostrou as mensagens normalmente desde o primeiro aluno e suas 4 notas até o ultimo.
Acho que o problema está no momento que ele sai do segundo for.
SergioLucas
Bom seria ver todo o código, essa classe Aluno como está?
Veja como rodou legal o seu For:
@Geralt_Marston
Eu fiz algumas correções no seu código, eu coloquei o Scanner
e ao invés de colocar sc.nextline() eu coloquei o sc.next();
Ele estava passando direto pelo nome do usuário.
Teste no seu projeto para ver se vai dá certo agora, Segue o Código abaixo:
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
for(inti=0;i<5;++i){System.out.println("Informe o nome do "+(i+1)+"º aluno: ");StringnomeAluno=sc.next();System.out.println("Informe o número da matrícula do "+(i+1)+"º aluno: ");intnumMatricula=sc.nextInt();double[]notas=newdouble[4];for(intj=0;j<4;++j){System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");notas[j]=sc.nextDouble();}}// TODO code application logic here}
@Geralt_Marston , é verdade, as vezes acontece, é bom sempre testar cada parte de um código pediu para mostrar o que ele está fazendo ou o que a variável está recebendo.
Marque na resposta como obteve solução do seu problema e Edite o titulo do seu Post colocando na frente: [RESOLVIDO] para ficar organizado ok?
Bons Estudos! E Sempre que puder ajude o próximo hein! Abraços!
DreSantosz1 like
Isso acontece quando você tenta ler uma String logo depois de ter lido um número, isso porque o Scanner guarda o \n do fim da linha após você ler o número. Teste colocar um input.nextLine() logo após o segundo laço for. Substituir o input.nextLine() por input.next() vai te impossibilitar de ler nomes compostos.
for(inti=0;i<5;++i){System.out.print("Informe o nome do "+(i+1)+"º aluno: ");StringnomeAluno=input.nextLine();System.out.print("Informe o número da matrícula do "+(i+1)+"º aluno: ");intnumMatricula=input.nextInt();double[]notas=newdouble[4];for(intj=0;j<4;++j){System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");notas[j]=input.nextDouble();}input.nextLine();Alunoaluno=newAluno();aluno.setNome(nomeAluno);aluno.setMatricula(numMatricula);aluno.setNotas(notas);alunos[i]=aluno;}