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();
问题是这样的。它输入整数但是当涉及到字符串时,它打印“给出名字”但它不会等到我输入内容,它会跳到下一条指令。
为什么?
答案 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:");