Problema com Strings

Java

JavaSE

04/06/2018

Boa Noite, Sou iniciante em java e estou tentando montar uma lista de alunos para digitar notas, gostaria de saber o que estou fazendo de errado, no código abaixo, pois ele pula a String nome e vai direto para a String curso.

import java.util.Scanner;

   public class teste2{
   
   public static void main(String Args[]){
   
   Scanner entrada = new Scanner(System.in);
   String nome, curso = new String();
   
   int numero;
   float nota1;
   float nota2;

   System.out.printf(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n"Digite os dados dos alunos: ");
   
   System.out.println("Digite o número do aluno: ");
   numero = entrada.nextInt();
  
   System.out.println("Digite o nome do aluno: ");
   nome = entrada.nextLine();
  
   System.out.println("Digite o curso do aluno: ");
   curso = entrada.nextLine();
    
   System.out.println("Digite a Nota 1 do aluno: ");
   nota1 = entrada.nextFloat();
   
   System.out.println("Digite a Nota 2 do aluno: ");
   nota2 = entrada.nextFloat();

   }
}

Tiago

Tiago

Curtidas 0

Melhor post

Evandro Silva

Evandro Silva

06/06/2018

E ai Tiago, tudo bom? Então, é o seguinte. Cada vez que você faz uma ação com o input do Java (Scanner) ele só finaliza quando pressiona a tecla ENTER. Quando lemos uma string por exemplo: "DevMedia", o Java na verdade irá gravar essa string como "DevMedia\\\\\\\\n", já quando lemos um número ele tenta gravar o \\\\\\\\n junto e não consegue, grava apenas o número e o \\\\\\\\n que ficou para trás fica no buffer do Java. Então minha dica é, toda vez que ler um número com o input do Java (Scanner) na próxima linha coloque um entrada.nextLine(); para que esse \\\\\\\\n saia do buffer e você possa digitar a próxima entrada. Nesse exemplo você digita um número e no local do nome o Java atribui o \\\\\\\\n do buffer para a variável do nome, por isso não consegue digitar o nome, showww? Sucesso.
Só para deixar claro, o buffer na verdade não é do Java, mas sim do teclado.
GOSTEI 2

Mais Respostas

Evandro Silva

Evandro Silva

04/06/2018

E ai Tiago, tudo bom? Então, é o seguinte. Cada vez que você faz uma ação com o input do Java (Scanner) ele só finaliza quando pressiona a tecla ENTER. Quando lemos uma string por exemplo: "DevMedia", o Java na verdade irá gravar essa string como "DevMedia\\\\n", já quando lemos um número ele tenta gravar o \\\\n junto e não consegue, grava apenas o número e o \\\\n que ficou para trás fica no buffer do Java. Então minha dica é, toda vez que ler um número com o input do Java (Scanner) na próxima linha coloque um entrada.nextLine(); para que esse \\\\n saia do buffer e você possa digitar a próxima entrada. Nesse exemplo você digita um número e no local do nome o Java atribui o \\\\n do buffer para a variável do nome, por isso não consegue digitar o nome, showww? Sucesso.
GOSTEI 1
POSTAR