我尝试使用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
答案 0 :(得分:2)
您正在关闭链接到标准输入流Scanner
的{{1}}对象。这会导致System.in
关闭,因此不再接受任何输入。在下一次迭代System.in
返回userInput.hasNextLine()
。创建一个false
的实例,并在循环的所有迭代运行后关闭它。
Scanner