循环中的Java扫描程序只获取第一个输入
我试图使用for循环从用户那里获取多个输入。在这个循环中,我调用了一个包含扫描器的函数。当我只调用一次函数时,程序运行良好。但是在循环中,只有在第一次调用函数时,它才能正常工作。我在下面创建了一个简化的程序示例。我怎样才能改变这一点,使循环的其他迭代也能正常工作循环中的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 = "";
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;
}