import java.util.Scanner;
public class CalculandoMedia {
public static void main(String [] principal){
Scanner leia = new Scanner(System.in);
int aluno = 0;
int y = 0;
int[] notas = new int[10];
String[] alunos = new String[10];
String pergunta = "Digite o nome do aluno: ";
String media = "Digite nota dele:";
while (aluno!=10) {
System.out.println(pergunta);
alunos[aluno] = leia.nextLine();
System.out.println(media);
notas[y] = leia.nextInt();
aluno++;
y++;
}
aluno = 0;
y = 0;
while (aluno!=10) {
System.out.println(alunos[aluno]);
System.out.println(notas[y]);
aluno++;
y++;
}
}
}
Ele só pede o nome do aluno uma vez, depois só pede nota, até o int aluno for igual 10, o que será???
Ao ler do Console, o único método que você deve usar na classe Scanner é o nextLine(). Toda sequência no console é terminada por \n. Inclusive a entrada de inteiros. O seu programa dava problema pois o nextInt() lê o inteiro e deixa o \n que vem depois dele no scanner. No próximo nextLine() ele encontra o \n e pensa que o usuário digitou uma linha vazia.
Eis o código corrigido:
[code]import java.util.Scanner;
public class CalculandoMedia {
public static void main(String [] principal){
Scanner leia = new Scanner(System.in);
String[] alunos = new String[10];
int[] notas = new int[10];
for (int aluno = 0; aluno < 10; aluno++) {
System.out.println("Digite o nome do aluno: ");
alunos[aluno] = leia.nextLine();
System.out.println("Digite nota dele:");
notas[aluno] = Integer.parseInt(leia.nextLine());
}
for (int aluno = 0; aluno < 10; aluno++) {
System.out.println(alunos[aluno]);
System.out.println(notas[aluno]);
aluno++;
}
Ao ler do Console, o único método que você deve usar na classe Scanner é o nextLine(). Toda sequência no console é terminada por \n. Inclusive a entrada de inteiros. O seu programa dava problema pois o nextInt() lê o inteiro e deixa o \n que vem depois dele no scanner. No próximo nextLine() ele encontra o \n e pensa que o usuário digitou uma linha vazia.
[/quote]
Interessante não sabia que o nextInt() deixava esse lixo para traz…
Valeu ViniGodoy
Ao ler do Console, o único método que você deve usar na classe Scanner é o nextLine(). Toda sequência no console é terminada por \n. Inclusive a entrada de inteiros. O seu programa dava problema pois o nextInt() lê o inteiro e deixa o \n que vem depois dele no scanner. No próximo nextLine() ele encontra o \n e pensa que o usuário digitou uma linha vazia.
Eis o código corrigido:
[code]import java.util.Scanner;
public class CalculandoMedia {
public static void main(String [] principal){
Scanner leia = new Scanner(System.in);
String[] alunos = new String[10];
int[] notas = new int[10];
for (int aluno = 0; aluno < 10; aluno++) {
System.out.println("Digite o nome do aluno: ");
alunos[aluno] = leia.nextLine();
System.out.println("Digite nota dele:");
notas[aluno] = Integer.parseInt(leia.nextLine());
}
for (int aluno = 0; aluno < 10; aluno++) {
System.out.println(alunos[aluno]);
System.out.println(notas[aluno]);
aluno++;
}
como rapida explicação é o pula linha, ou seja, o “enter” que vc usa para confirmar o digitado, pelo que o ViniGodoy comentou, o readInt() deixa ele para traz, não limpando o \n que foi inserido com o seu “enter”, ai quando ele pede denovo o nextLine(), e verifica ali um \n e considera que você quiz inserir um campo vazio.