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

问题描述 投票:0回答:3

我有扫描仪询问一些偏好。它创建一个介于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成为一个空白列表。为什么会发生这种情况,我该如何解决?

java input switch-statement java.util.scanner
3个回答
3
投票

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

int choice = input.nextInt();

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

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


0
投票

我遇到了和你一样的问题。尝试:

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

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(" ");
© www.soinside.com 2019 - 2024. All rights reserved.