scanner.next()與scanner.nextLine()的區別

1.next()一定要讀取到有效字符後纔可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符之後,next()方法纔將其後輸入的空格鍵、Tab鍵或Enter鍵等視爲分隔符或結束符。簡單地說,next()查找並返回來自此掃描器的下一個完整標記。完整標記的前後是與分隔模式匹配的輸入信息,所以next方法不能得到帶空格的字符串而nextLine()方法的結束符只是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字符,它是可以得到帶空格的字符串的。
2.同樣對於nextInt()、nextDouble()等和next一樣一定要讀取到有效字符後纔可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符之後,next()方法纔將其後輸入的空格鍵、Tab鍵或Enter鍵等視爲分隔符或結束符。
3.所以如果next()或者nextInt()等下面有nextLine()時,中間要再加一句nextLine()用來接收next()或者nextInt()等過濾的回車、tab、空格。這樣才能讓下面的nextLine()生效,否則它就接收了enter、tab、空格等,導致用戶沒有輸入就結束了。
eg:
下面的就是錯誤的:
System.out.println("請輸入編號:");
int num=sc.nextInt();
System.out.println("請輸入姓名;");
String name=sc.nextLine();
這樣在輸入的時候,輸入編號之後,按enter鍵,發現name是空的,其實name存儲的是被sc.nextInt()當作結束符的enter。
正確的是:
System.out.println("請輸入編號:");
int num=sc.nextInt();
sc.nextLine();//接收被過濾的enter
System.out.println("請輸入姓名;");
String name=sc.nextLine();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章