我有一个用作菜单的 switch 语句,在此我试图读取用户输入。目前我正在使用variable=in.next();
,这有效。但是它只会读取一个单词,并且有时用户可能需要输入更多单词,所以我尝试使用variable=in.nextLine();
,它可以编译,但是当我运行程序时,我从菜单中选择了我的选择,它会跳过读取并返回菜单。
任何帮助将不胜感激,谢谢:)
我有一个用作菜单的 switch 语句,在此我试图读取用户输入。目前我正在使用variable=in.next();
,这有效。但是它只会读取一个单词,并且有时用户可能需要输入更多单词,所以我尝试使用variable=in.nextLine();
,它可以编译,但是当我运行程序时,我从菜单中选择了我的选择,它会跳过读取并返回菜单。
任何帮助将不胜感激,谢谢:)
您要么必须从用户输入中删除换行符\n
,要么假设它在您的 switch 语句中。
很大程度上是因为您决定使用 nextLine() 用户对计算机的输入将如下所示
f\n
所以只需相应地比较字符串!
只需使用:
name=in.nextLine();
和
String choice = in.nextLine();
这应该在构造函数中,并且在 runApp 的顶部。
这样,您就不会将新行留在缓冲区中(它将用于 eg dp
)。
你应该有:
dp=in.nextLine();
如您的问题中所述。
开关选择器只能是整数、短字符、字符或枚举。字符串不能用作开关选择器。
如果我对您的理解正确,您想使用用户输入的单词来控制您的流程。如果您有预定义的单词列表,我建议您使用枚举:
枚举字{开始,停止,哔,}
现在用户输入一个单词哔声。你可以说:
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);
}
好的,我认为我在 Java 方面太无能,而且我的问题很糟糕。
当我接受用户输入时,它只需要 1 个单词,我希望它基本上能接受他们输入的所有内容,而当我使用 nextLine 时,这只是跳过阅读并让我重新选择一个选项。