2013-10-21 63 views
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(); 

的问题是这样this.It输入整数,但是当涉及到字符串,它打印“给命名为”但直到我输入的东西它不等待,它跳过到下一条指令。跳过输入查询字符串

这是为什么?

+1

请参阅http://stackoverflow.com/questions/19485407/user-input-string-and-integers-in-java/19485423#19485423 –

回答

1

问题在于input.nextInt()命令只读取int值。所以当你继续阅读input.nextLine()时,你会收到“\ n”回车键。所以跳过这一点,你必须添加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:"); 
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(); 
2

当你阅读使用nextIntint价值,它读取int值,它跳过新线字符。后者将在下一个nextLine中读取,导致它跳过“真实”输入。

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

重要注意事项:请勿使用int来存储ID值!改为使用String

+0

为id而不是int使用字符串类型的原因是什么? – Matt

+1

@Matt想象一下ID:3423334253 - 'int'不能存储这个。 – Maroun