Problema com Strings

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

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar