O que tem de errado nessa classe?

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á???

Assim:// linha 16: //em vez de alunos[aluno] = leia.nextLine(); //use alunos[aluno] = leia.next();ABS …

vlw, agora consegui!

Obrigado pela atenção!!!

Cuidado.

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++;  
     }

}
}
[/code]

[quote=ViniGodoy]Cuidado.

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 :smiley:

[quote=ViniGodoy]Cuidado.

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++;  
     }

}
}
[/code][/quote]

mais como assim terminada por \n???

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.

ahhh, blz, agora entendi, vlw pela explicação!!

Obrigado pela atenção!!!

mais esse pequeno detalhe é pelo fato de ser comando de linha correto???

± sim :smiley:

blz!!!

arrumei o código aqui, mais o estranho que ele só me pede 5 vezes pra digitar o nome em vez de 10 vezes!!!
o que será???

Testei aqui e funcionou certo…
Inseriu os 10 e exibiu os 10 também
:smiley:

[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++;     
  }   

}
}[/code]

[quote=dxos]Testei aqui e funcionou certo…
Inseriu os 10 e exibiu os 10 também
:smiley:

[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++;     
  }   

}
}[/code][/quote]

agora foi :smiley: