2
int id;
float grade; 
String name;
Scanner z= new Scanner(System.in);
System.out.println("Give the id:\n");
id=z.nextInt();
System.out.println("your id is :"+id+"\n");

System.out.println("Give the name:");
name=z.nextLine();
System.out.println("your name is :"+name);

System.out.println("Give the grade:\n");
grade=z.nextFloat();

问题是这样的。它输入整数,但是当涉及到字符串时,它会打印“给出名称”,但它不会等到我输入一些东西,它会跳到下一条指令。

为什么?

4

3 回答 3

3

您已使用name=z.nextLine(),因此这种行为,将其替换为name=z.next()。以下是编辑后的代码:

int id;
float grade; 
String name;

Scanner z= new Scanner(System.in);
System.out.println("Give the id:\n");
id=z.nextInt();
System.out.println("your id is :"+id+"\n");

System.out.println("Give the name:");
name=z.next();
System.out.println("your name is :"+name);

System.out.println("Give the grade:\n");
grade=z.nextFloat();
于 2013-10-21T06:12:19.633 回答
2

当您使用 读取intnextInt,它只读取值,它会跳过换行符。后者将在下一个被读取,导致它跳过“真实”输入。intnextLine

nextLine您可以通过在 "real" 之前添加另一个来解决此问题nextLine,它会吞下'\n'您不想阅读的内容。

重要提示:请勿int用于存储 ID 值!改用String

于 2013-10-21T06:19:03.480 回答
1

问题在于input.nextInt()它只读取 int 值的命令。因此,当您继续使用 input.nextLine() 阅读时,您会收到 "\n" Enter 键。所以要跳过这个,你必须添加 input.nextLine()

id  = z.nextInt();
System.out.println ("your id is :"+id+"\n");
z.nextLine ();// add this line between the next line read

System.out.println("Give the name:");

或者

id = Integer.parseInt(z.nextLine());
System.out.println ("your id is :"+id+"\n");
System.out.println("Give the name:");
于 2013-10-21T06:18:46.267 回答