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
Curtir tópico
+ 0
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
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
Clique aqui para fazer login e interagir na Comunidade :)