今天在練習中遇到了調用Scanner類中的nextLine()輸入字符串自動跳過的問題,在博客上看了兩篇解答,原來是nextLine()誤認了前面next()輸入時的Enter,但還是想了一會兒才弄清楚,這里再做個小總結。
1.在next()和nextLine()方法連用時,nextLine()會在剛剛輸入時就誤認了前面next()結束輸入的Enter,因此還沒等輸入就直接結束了;
2.那么為什么反過來nextLine()在前、next()在后,next()就沒有這個問題呢?
這是因為next()方法在輸入時要遇到一個有效字符后再遇到Enter才會結束,因此當它剛輸入就遇到Enter是不會結束的,也就可以繼續輸入了。
3.解決方法:如果一定要用nextLine(),可以在nextLine()前再添加一個nextLine()用於回收Enter,這樣下一個nextLine()就可以正常輸入了。
例如: Scanner s = new Scanner(System.in);
String str1 = s.next();
String str2 = s.nextLine(); //用於回收Enter
String str3 = s.nextLine();