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(int i = 0; i < 5; ++i){
System.out.print("Informe o nome do "+(i+1)+"º aluno: ");
String nomeAluno = input.nextLine();
System.out.print("Informe o número da matrícula do "+(i+1)+"º aluno: ");
int numMatricula = input.nextInt();
double[] notas = new double[4];
for(int j = 0; j < 4; ++j){
System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");
notas[j] = input.nextDouble();
}
Aluno aluno = new Aluno();
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.
Bom seria ver todo o código, essa classe Aluno como está?
Veja como rodou legal o seu For:
Aqui no meu ele fica assim:
Informe a 4º nota do aluno Alfredo:
7,2
Informe o nome do 2º aluno: Informe a matrícula do 2º aluno:
A classe Aluno:
public class Aluno{
private String nome;
private String matricula;
private double[] notas;
public String getNome(){
return nome;
}
public void setNome(String nome){
this.nome = nome;
}
public String getMatricula(){
return matricula;
}
public void setMatricula(String matricula){
this.matricula = matricula;
}
public double[] getNotas(){
return notas;
}
public void setNotas(double[] notas){
this.notas = notas;
}
}
@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(int i = 0; i < 5; ++i){
System.out.println("Informe o nome do "+(i+1)+"º aluno: ");
String nomeAluno = sc.next();
System.out.println("Informe o número da matrícula do "+(i+1)+"º aluno: ");
int numMatricula = sc.nextInt();
double[] notas = new double[4];
for(int j = 0; j < 4; ++j){
System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");
notas[j] = sc.nextDouble();
}
}
// TODO code application logic here
}
Agora foi !! Era uma coisa tão simples kk
Informe a 4º nota do aluno Gabriel: 9,0
Informe o nome do 2º aluno:
Valeu!
@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! 
1 curtida
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(int i = 0; i < 5; ++i){
System.out.print("Informe o nome do "+(i+1)+"º aluno: ");
String nomeAluno = input.nextLine();
System.out.print("Informe o número da matrícula do "+(i+1)+"º aluno: ");
int numMatricula = input.nextInt();
double[] notas = new double[4];
for(int j = 0; j < 4; ++j){
System.out.println("Informe a "+(j+1)+"º nota do aluno "+nomeAluno+": ");
notas[j] = input.nextDouble();
}
input.nextLine();
Aluno aluno = new Aluno();
aluno.setNome(nomeAluno);
aluno.setMatricula(numMatricula);
aluno.setNotas(notas);
alunos[i] = aluno;
}
1 curtida