Java 为什么扫描仪不能在交换机内工作

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

我有一个扫描器询问一些偏好。它创建一个介于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();
        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) 创建一个新的扫描仪真是太难看了。