Java 为什么扫描仪不能在交换机内工作
我有一个扫描器询问一些偏好。它创建一个介于0和3之间的Java 为什么扫描仪不能在交换机内工作,java,input,switch-statement,java.util.scanner,Java,Input,Switch Statement,Java.util.scanner,我有一个扫描器询问一些偏好。它创建一个介于0和3之间的int变量choice。然后,我做以下工作: String location; switch(choice){ case 0: System.out.println("Please type the zip codes you would like to search in a comma separated list"); location = input.nextLine(); br
int
变量choice
。然后,我做以下工作:
String location;
switch(choice){
case 0:
System.out.println("Please type the zip codes you would like to search in a comma separated list");
location = input.nextLine();
break;
case 1:
System.out.println("Please type the street names you would like to search in a comma separated list");
location = input.nextLine().toUpperCase();
break;
case 2:
System.out.println("Please type the boroughs you would like to search in a comma separated list");
location = input.nextLine().toUpperCase();
break;
default:
location = "none";
break;
}
String locations[] = location.split("\\s*,\\s*");
现在对我来说,这似乎很好,但当选择设置为0、1或2时,它将打印正确的行,但跳过用户必须输入内容的部分(看起来像location=…)
这意味着它不给用户输入任何内容的机会,因此
位置
成为一个空白列表为什么会发生这种情况?我如何修复它?您可能是在最后一次输入之后阅读换行符,而不是真正的下一行。尝试:
int choice = input.nextInt();
input.nextLine(); // <--- Eat it here!
String location;
switch(choice){
case 0:
Syst...
int choice=input.nextInt();
input.nextLine();// 您可能在最后一次输入后阅读换行符,而不是真正的下一行。尝试:
int choice = input.nextInt();
input.nextLine(); // <--- Eat it here!
String location;
switch(choice){
case 0:
Syst...
int choice=input.nextInt();
input.nextLine();// 我和你面临同样的问题。尝试:
case 'f' :
System.out.println("Enter a word or phrase to be found:");
scnr.nextLine();
String phrase = scnr.nextLine(); //
我和你面临同样的问题。尝试:
case 'f' :
System.out.println("Enter a word or phrase to be found:");
scnr.nextLine();
String phrase = scnr.nextLine(); //
将nextLine置于开关前的读数之后
System.out.print("Digite um número ente 1 e 9: ");
int opc = read.nextInt();
read.nextLine();
switch(opc) {
并使用nextLine()读取您的值
将nextLine置于开关前的读数之后
System.out.print("Digite um número ente 1 e 9: ");
int opc = read.nextInt();
read.nextLine();
switch(opc) {
并使用nextLine()读取您的值
检查此问题:检查此问题:使用新扫描仪进行此输入如何?@nazar_art:完全离题,很可能是错误的,或者我不明白你想说什么。这是我的问题……谢谢!如果允许的话,我会在6分钟内给你答复to@Martijn在int choice=input.nextInt()之后,我想知道是否可能使用新的扫描仪进行输入代码>被执行了?嗯,这是错误的,因为有很多原因。1) 您正在创建不必要的对象。2) 如果底层inputstream被包装在来自文件的BufferedInput流中,则此操作可能会失败。3) OP his问题是一个定义良好的扫描仪行为,应该根据需要简单地处理。4) 创建一个新的扫描仪太难看了。使用新的扫描仪来进行输入怎么样?@nazar_art:完全离题,很可能是错的,或者我不明白你想说什么。这是我的问题……谢谢!如果允许的话,我会在6分钟内给你答复to@Martijn在int choice=input.nextInt()之后,我想知道是否可能使用新的扫描仪进行输入代码>被执行了?嗯,这是错误的,因为有很多原因。1) 您正在创建不必要的对象。2) 如果底层inputstream被包装在来自文件的BufferedInput流中,则此操作可能会失败。3) OP his问题是一个定义良好的扫描仪行为,应该根据需要简单地处理。4) 创建一个新的扫描仪真是太难看了。