2013-10-21 95 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