Java中nextLine()與其他next(),nextInt(),nextFloat()的區別
阿新 • • 發佈:2019-04-27
避免 oat 而是 ring pre scan print int clas
最近學習Java過程中遇到一個小問題,就是用nextInt()來接收輸入內容時,按完回車之後會產生後面的內容無法輸入的結果,因此來做個小記錄。有不足的地方還請大家指出。
區別一 讀取返回結果
nextInt()讀取結果為int類型
nextFloat()讀取結果為float類型
next()讀取結果為String類型
next Line()讀取結果為String類型
區別二 讀取方式
next(),nextInt(),nextFloat()看到空格符或回車符都認為讀取結束,此時不會讀取回車符。
nextLine()只以回車符為結束,並且會讀取回車符。
請看以下例子:
public void logIn(){ Scanner input = new Scanner(System.in); System.out.println("請輸入ID:"); int id = input.nextInt(); System.out.println("請輸入密碼:"); String pass = input.nextLine(); }
輸出結果如圖:
這裏我們輸入ID之後,按回車鍵,系統彈出"請輸入密碼:"後並沒有等待控制臺輸入,而是直接結束了程序。
原因就是當我們輸入完ID並且按下回車之後,nextInt()方法只會讀取‘123’,而不會讀取回車;因此回車符會被留在此處。
當執行到nextLine()方法時,nextLine()方法會讀取回車,並且以回車符為結束,因此該方法會在我們輸入之前就讀取到了上次我們輸入的回車符,於是該方法就認為已經執行完畢,所以我們沒有輸入的機會。
解決辦法
我們可以都使用nextLine()方法來讀取輸入,然後再進行接收數據的類型轉換,這樣就可以避免上述的小BUG。
其他方法後續補充。
Java中nextLine()與其他next(),nextInt(),nextFloat()的區別