gpt4 book ai didi

java - 为什么我的 switch 语句会出现这种奇怪的行为?

转载 作者:行者123 更新时间:2023-11-29 06:06:18 24 4
gpt4 key购买 nike

采用以下用Java编写的代码:

choice = keyboard.nextByte();

switch (choice)
{
case (byte) 4:
System.out.print("Input the layout type: ");
layoutType = keyboard.nextLine();
System.out.print("Input the layout name: ");
layoutName = keyboard.nextLine();
break;
default:
break;
}

当我运行程序时,我得到以下信息:

Input the layout type: Input the layout name:

我会同时收到两个输入的提示!这是为什么?程序不应该在它写着“keyboard.nextLine()”的地方停止吗?它在 switch 语句之外执行此操作,但不会在其中执行。为什么在 switch 语句中提示用户输入会导致这种奇怪的行为?

===================================更新:

是的,没错。 keyboardjava.util.Scanner 类的实例。

最佳答案

这是因为您正在输入换行符以读取字节,并且换行符以某种方式被视为后续调用 readLine() 的输入。在 readByte() 之后添加一个虚拟的 readLine() 来解决这个问题:

choice = keyboard.nextByte();
keyboard.readLine(); // dummy readline

关于java - 为什么我的 switch 语句会出现这种奇怪的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8435775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com