Fórum Problema com Strings #594670

04/06/2018

0

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

Responder

Post mais votado

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.

Evandro Silva

Evandro Silva
Responder

Gostei + 2

Mais Posts

05/06/2018

Evandro Silva

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.
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar