1. 程式人生 > >Java Scanner nextLine方法跳過

Java Scanner nextLine方法跳過

問題描述

Scanner使用了nextInt方法的時候,如果接下來要使用nextLine,會獲取不到內容

原因

因為Scanner讀取使用者輸入資料,是先判斷緩衝區是否含有資料,沒有則接收使用者輸入的資料,把使用者輸入的資料放在緩衝區中讀取。

Scanner先獲取使用者的內容到緩衝區中,呼叫nextInt方法讀取數值,但是緩衝區的內容裡其實還含有個\n換行符,nextInt方法將數值取出之後,\n仍然存在於緩衝區.

之後我們再呼叫nextLine方法,由於緩衝區中還存在有內容,所以Scanner這個時候直接去到了緩衝區讀取,讀取到\n,直接換行.

於是,Scanner的nextLine方法就跳過,沒有獲取到使用者輸入內容.

解決方法

在使用完nextInt之後呼叫nextLine,將緩衝區中的\n清除掉

    int i = scanner.nextInt();
    scanner.nextLine();