0

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

任何帮助将不胜感激,谢谢:)

4

4 回答 4

1

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

很大程度上是因为您决定使用 nextLine() 用户对计算机的输入将如下所示

 f\n

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

于 2010-11-26T21:31:55.147 回答
1

只需使用:

name=in.nextLine();

String choice = in.nextLine();

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

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

你应该有:

dp=in.nextLine();

如您的问题中所述。

于 2010-11-26T22:07:47.660 回答
-1

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

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

枚举字{开始,停止,哔,}

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

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);
}
于 2010-11-26T21:34:30.077 回答
-1

好的,我认为我在 Java 方面太无能,而且我的问题很糟糕。

当我接受用户输入时,它只需要 1 个单词,我希望它基本上能接受他们输入的所有内容,而当我使用 nextLine 时,这只是跳过阅读并让我重新选择一个选项。

于 2010-11-26T21:51:53.580 回答