importjava.util.Scanner;publicclassCalculandoMedia{publicstaticvoidmain(String[]principal){Scannerleia=newScanner(System.in);intaluno=0;inty=0;int[]notas=newint[10];String[]alunos=newString[10];Stringpergunta="Digite o nome do aluno: ";Stringmedia="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 …
alexandref93
vlw, agora consegui!
Obrigado pela atenção!!!
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:
importjava.util.Scanner;publicclassCalculandoMedia{publicstaticvoidmain(String[]principal){Scannerleia=newScanner(System.in);String[]alunos=newString[10];int[]notas=newint[10];for(intaluno=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(intaluno=0;aluno<10;aluno++){System.out.println(alunos[aluno]);System.out.println(notas[aluno]);aluno++;}}}
dxos
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.
Interessante não sabia que o nextInt() deixava esse lixo para traz…
Valeu ViniGodoy
alexandref93
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:
importjava.util.Scanner;publicclassCalculandoMedia{publicstaticvoidmain(String[]principal){Scannerleia=newScanner(System.in);String[]alunos=newString[10];int[]notas=newint[10];for(intaluno=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(intaluno=0;aluno<10;aluno++){System.out.println(alunos[aluno]);System.out.println(notas[aluno]);aluno++;}}}
mais como assim terminada por \n???
dxos
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.
alexandref93
ahhh, blz, agora entendi, vlw pela explicação!!
Obrigado pela atenção!!!
alexandref93
mais esse pequeno detalhe é pelo fato de ser comando de linha correto???
dxos
± sim
alexandref93
blz!!!
alexandref93
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á???
dxos
Testei aqui e funcionou certo...
Inseriu os 10 e exibiu os 10 também
:D
importjava.util.Scanner;publicclassCalculandoMedia{publicstaticvoidmain(String[]principal){Scannerleia=newScanner(System.in);String[]alunos=newString[10];int[]notas=newint[10];for(intaluno=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(intaluno=0;aluno<10;aluno++){System.out.println(alunos[aluno]);System.out.println(notas[aluno]);aluno++;}}}
alexandref93
dxos:
Testei aqui e funcionou certo...
Inseriu os 10 e exibiu os 10 também
:D
importjava.util.Scanner;publicclassCalculandoMedia{publicstaticvoidmain(String[]principal){Scannerleia=newScanner(System.in);String[]alunos=newString[10];int[]notas=newint[10];for(intaluno=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(intaluno=0;aluno<10;aluno++){System.out.println(alunos[aluno]);System.out.println(notas[aluno]);aluno++;}}}