Java中nextLine()與其他next(),nextInt(),nextFloat()的區別


最近學習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。

其他方法后續補充。


免責聲明!

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



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