循环中的Java扫描程序只获取第一个输入

循环中的Java扫描程序只获取第一个输入,java,loops,java.util.scanner,Java,Loops,Java.util.scanner,我试图使用for循环从用户那里获取多个输入。在这个循环中,我调用了一个包含扫描器的函数。当我只调用一次函数时,程序运行良好。但是在循环中,只有在第一次调用函数时,它才能正常工作。我在下面创建了一个简化的程序示例。我怎样才能改变这一点,使循环的其他迭代也能正常工作 import java.util.Scanner; public class Main { public static void main(String[] args) { String response = "";

我试图使用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;
}
}

您正在关闭链接到标准输入流
系统的
扫描仪
对象。这将导致
系统.in
关闭,因此不再接受输入。在下一次迭代中,
userInput.hasNextLine()
返回
false
。创建
Scanner
的单个实例,并在循环的所有迭代运行后关闭它

private static Scanner userInput = new Scanner(System.in);

public static void main(String[] args) {

    String response = "";

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

    userInput.close();
}

public static String getResponse() {

    String response = "";

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

    if (userInput.hasNextLine()) {
        response = userInput.nextLine();
    }

    return response;
}
private static Scanner userInput=新扫描仪(System.in);
公共静态void main(字符串[]args){
字符串响应=”;
对于(int-inputNr=0;inputNr
private static Scanner userInput = new Scanner(System.in);

public static void main(String[] args) {

    String response = "";

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

    userInput.close();
}

public static String getResponse() {

    String response = "";

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

    if (userInput.hasNextLine()) {
        response = userInput.nextLine();
    }

    return response;
}