Java Scanner類中next()和nextLine()方法的區別



今天在練習中遇到了調用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();





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM