1. 程式人生 > >Java中nextLine()與其他next(),nextInt(),nextFloat()的區別

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

避免 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()的區別