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

时间:2013-10-20 21:08:15

标签: 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();
        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 =的行)。 ..)

这意味着它不会让用户有机会输入任何内容,因此locations成为空白列表。 为什么会发生这种情况?我该如何解决?

3 个答案:

答案 0 :(得分:3)

您可能在最后一次输入后读取换行符,而不是真正的下一行。尝试:

int choice = input.nextInt();

input.nextLine(); // <--- Eat it here!
String location;
switch(choice){
    case 0:
        Syst...

nextInt()调用,提示您选择,不会结束该行。因此,nextLine()之后第一次调用nextInt()将返回一个空字符串。要解决这个问题,请在整数后面吃掉空行,然后再继续。

答案 1 :(得分:0)

我遇到了与您相同的问题。试试:

case 'f' :
                System.out.println("Enter a word or phrase to be found:");
                scnr.nextLine();
                String phrase = scnr.nextLine(); //

答案 2 :(得分:0)

在开关之前的读取之后放置nextLine。

System.out.print("Digite um número ente 1 e 9: ");
int opc = read.nextInt();
read.nextLine();
switch(opc) {

然后使用nextLine()读取您的值

case 6:
    String[] procurados = read.nextLine().split(" ");