循环中的Java Scanner只获得第一个输入

时间:2015-02-15 18:34:26

标签: java loops java.util.scanner

我尝试使用for循环从用户那里获得多个输入。在该循环中,我调用包含扫描仪的功能。当我只调用一次该函数时,该程序工作正常。但是在循环内只有第一次调用函数才能正常工作。我已经创建了以下程序的简化示例。我怎样才能改变这一点,以便循环的其他迭代也能正常工作?

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

    String response = "";

    for(int inputNr = 0; inputNr <=2; inputNr++) {
        response = getResponse();
        System.out.println(response);
    }

}

public static String getResponse() {

    String response = "";

    System.out.println("Enter a String");

    Scanner userInput = new Scanner(System.in);
        if(userInput.hasNextLine()) {
            response = userInput.nextLine();
        }
    userInput.close();

    return response;
}
}

结果如

Enter a String
This is what I entered...
This is what I entered...
Enter a String

Enter a String

1 个答案:

答案 0 :(得分:2)

您正在关闭链接到标准输入流Scanner的{​​{1}}对象。这会导致System.in关闭,因此不再接受任何输入。在下一次迭代System.in返回userInput.hasNextLine()。创建一个false的实例,并在循环的所有迭代运行后关闭它。

Scanner