Scanner的next,nextint和nextLine的使用总结
生活随笔
收集整理的這篇文章主要介紹了
Scanner的next,nextint和nextLine的使用总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題所在:
java中Scanner類中nextLine()方法與next()或nextInt()聯用時可能出現一個常見的錯誤,那就是當next()或者nextInt(),nextDouble() 、 nextFloat()用在nextLine的前面時。nextLine會把前者的結束符“換行符”作為字符串讀入,進而不需要從鍵盤輸入字符串nextLine已經轉向下一條語句執行
public class Test {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("請輸入一個整數");while(in.hasNextInt()){int num = in.nextInt();System.out.println("請輸入一個字符串");String str = in.nextLine();System.out.println("num="+num+",str="+str);System.out.println("請輸入一個整數");}}} 行結果為:請輸入一個整數1231請輸入一個字符串num=1231,str=請輸入一個整數第二個String類型的參數沒有讀取進來。改用了next()方法
public class Test {public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.println("請輸入一個整數");while(in.hasNextInt()){int num = in.nextInt();System.out.println("請輸入一個字符串");String str = in.next();System.out.println("num="+num+",str="+str);System.out.println("請輸入一個整數");}}} 請輸入一個整數213 jdskals請輸入一個字符串num=213,str=jdskals請輸入一個整數
原因:
next()以忽略空格,Tab,Enter鍵開始,以空格,Tab,Enter鍵作為結束符結束。
next()一定要讀取到有效字符后才可以結束輸入,對輸入有效字符之前遇到的空格鍵、Tab鍵,換行符或Enter鍵等結束符,next()方法會自動將其去掉,只有在輸入有效字符之后,next()方法才將其后輸入的空格鍵、Tab鍵或Enter鍵等視為分隔符或結束符。簡單地說,next()查找并返回來自此掃描器的下一個完整標記。完整標記的前后是與分隔模式匹配的輸入信息,所以next方法不能得到帶空格的字符串。
而nextLine()方法的結束符只是Enter鍵,即nextLine()方法返回的是Enter鍵之前的所有字符,它是可以得到帶空格的字符串的。
修正方法:在next()或nextInt()方法使用Enter鍵之后,填充一個無用的nextLine()
總結
以上是生活随笔為你收集整理的Scanner的next,nextint和nextLine的使用总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java设计模式-适配器模式Adapte
- 下一篇: 用结点实现链表LinkedList,用数