1. 程式人生 > >java中Scanner類nextInt之後用nextLine無法讀取輸入

java中Scanner類nextInt之後用nextLine無法讀取輸入

Scanner是一個掃描器,它掃描資料都是去記憶體中一塊緩衝區中進行掃描並讀入資料的,而我們在控制檯中輸入的資料也都是被先存入緩衝區中等待掃描器的掃描讀取。這個掃描器在掃描過程中判斷停止的依據就是“空白符”,空格啊,回車啊什麼的都算做是空白符。

nextInt()方法在掃描到空白符的時候會將前面的資料讀取走,但會丟下空白符“\r”在緩衝區中,但是,nextLine()方法在掃描的時候會將掃描到的空白符一同清理掉。

瞭解了這兩個方法特性和區別,就知道了上邊的程式碼究竟是怎麼回事,以及知道了解決的方法。像是上邊的程式碼nextInt()方法之後在緩衝區中留下了“\r”,然後nextLine()方法再去緩衝區找資料的時候首先看到了“\r”,然後就把這個“\r”掃描接收進來,並在緩衝區內清除掉。其實,nextLine()方法是執行過的,並沒有不執行。

知道了原理,那麼解決方法就比較簡單了:

1:可以再nextInt()方法後面多加一句nextLine()方法專門用來取出緩衝區中留下的空白符,

2:可以只用nextLine()方法,然後通過Integer類中的parseInt()方法解析成int資料。因為nextLine()方法會自動清理掉後邊的空白符,這種方法就不會產生最開始那種錯誤了

--------------------- 本文來自 wjy1090233191 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/wjy1090233191/article/details/42080029?utm_source=copy