跳过输入字符串

时间:2013-10-21 06:08:17

标签: java

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();

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

为什么?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:2)

当您使用nextInt阅读int值时,它会显示 int值,它会跳过换行符。后者将在下一个nextLine中读取,导致它跳过“真实”输入。

您可以通过在“真实”nextLine之前添加其他nextLine来解决此问题,它会吞下您不想阅读的'\n'

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

答案 2 :(得分: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:");