Java - nextLine();在switch语句中

时间:2010-11-26 21:26:33

标签: java switch-statement next java.util.scanner

我有一个switch语句充当菜单,在此我试图读取用户输入。目前我正在使用variable=in.next();,这有效。但是它只会读取一个单词,并且用户可能需要输入更多单词,所以我尝试使用编译的variable=in.nextLine();,但是当我运行程序时,我从菜单中选择我的选择,它会跳过读入并返回菜单。

感谢任何帮助,谢谢:)

4 个答案:

答案 0 :(得分:1)

您必须从用户输入中删除换行符\n,或者假设它在您的switch语句中。

几乎是因为您决定使用nextLine(),用户对计算机的输入将如下所示

 f\n

所以只需相应地比较字符串!

答案 1 :(得分:1)

只需使用:

name=in.nextLine();

String choice = in.nextLine();

这应该在构造函数中,并在runApp的顶部。

这样,您就不会将新行留在缓冲区中(例如dp将用于此行。)

你应该:

dp=in.nextLine();

如你的问题所述。

答案 2 :(得分:-1)

切换选择器只能是整数,短整数,字符或枚举。字符串不能用作开关选择器。

如果我理解正确,您希望使用用户输入的字词控制您的流量。如果您有预定义的单词列表,我建议您使用枚举:

enum Words {     开始,停止,发出哔哔声 }

现在用户输入一个哔哔声。你可以说:

Words command = Words.valueOf();
///
switch (command) {
    case start: /* start something */ break;
    case stop: /* stop something */ break;
    case beep: /* beep!!! */ break;
    default: throw new IllegalArgumentException("Unknown command " + command);
}

答案 3 :(得分:-1)

好吧我觉得我在Java上太无能,并且严重地提出了我的问题。

当我接受用户输入时,它只需要1个单词,我希望它能够基本上取出所有内容,当我使用nextLine时,这只是跳过阅读并带我回去选择一个选项。