next()一定要讀取到有效字元後才可以結束輸入,對輸入有效字元之前遇到的空格鍵、tab鍵或enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字元之後,next()方法才將其後輸入的空格鍵、tab鍵或enter鍵等視為分隔符或結束符。
簡單地說,next()查詢並返回來自此掃瞄器的下乙個完整標記。完整標記的前後是與分隔模式匹配的輸入資訊,所以next方法不能得到帶空格的字串。
而nextline()方法的結束符只是enter鍵,即nextline()方法返回的是enter鍵之前的所有字元,它是可以得到帶空格的字串的。
s1=sc.next();
s2=sc.nextline();
執行結果是:
請輸入第乙個字串:home
請輸入第二個字串:輸入的字串是:home
可以看到,nextline()自動讀取了被next()去掉的enter作為他的結束符,所以沒辦法給s2從鍵盤輸入值。經過驗證,我發現其他的next的方法,如double nextdouble() , float nextfloat() , int nextint() 等與nextline()連用時都存在這個問題,解決的辦法是:在每乙個 next()、nextdouble() 、 nextfloat()、nextint() 等語句之後加乙個nextline()語句,將被next()去掉的enter結束符過濾掉。
在next()方法與nextline()混用的時候,在每個next()方法後面需要加上sc.nextline()
scanner sc = new scanner(system.in);
int num = sc.nextint();
// 加上下面這句
sc.nextline();
string name = new string[num];
for(int i=0;iint result = getbeautydegree(name);
for (int i : result)
本文參考 java中nextLine 和next 的區別
next 過濾掉第乙個有效字元之前的空白字元,開始讀取,到遇到空白字元停止,空白字元指的是空格鍵 tab鍵或enter鍵 而nextline 的結束字元 只是enter鍵,nextline 不會過濾掉之前的空白字元 nextline不過濾之前的空白字元,輸入數字後程式會直接結束 int s sc.n...
java中輸入函式next的用法
獲取控制台輸入 scanner in new scanner system.in 輸入整數 int a in.nextint 或者double a in.nextdouble 輸入字串 string str in.next 或者string str in.nextline next nextint ...
Scanner的next與nextLine方法
nextint 接收乙個整型字元,nextline 讀入一行文字,會讀入 n 字元,但 n 並不會成為返回的字元 串值的一部分 加入如下 int n scannerobjext.nextint string s1 scannerobjext.nextline string s2 scannerobj...