[英]JAVA jumps into default at switch-case
这是我尝试制作的决策支持系统中的代码。 基本上,问题是您是否要吃早餐。 StdIn.readChar()
用于读取您在控制台中插入的字符。 我100%确信它是正确的。
显然,这里缺少一个主要方法,我相信没有它很容易理解,但是如果您需要它,我可以在以后粘贴。
现在我的问题:
如果我运行此程序,则会在主要询问我是否饿了。 所以我输入j(德语中的“ ja”是“ yes”),程序跳入Breakfast方法。 但是随后我被问到是否要早餐,但没有时间插入一个字符。 它直接跳到Default方法。 如您所见,我已经使用print命令在最中间点看到了。 开关盒选择是否做错了?
我的控制台说:
Are you hungry?
(I typed) j
Do you want breakfast?
2 (this is due to the testing println command)
This insert is invalid
Do you want breakfast?
奇怪的是,此刻我能够写出答案。 我在“您喜欢温暖吗?”这个问题上也遇到了同样的问题,但是我当然无法回答,因为我需要再次回答第一个问题(您想吃早餐)。
你能帮助我吗? 我是否需要删除do-while循环? 我做错了吗,我需要删除所有内容? :d
public static void Breakfast(){
int a = 0;
do {
System.out.println("Do you want Breakfast?");
char y = StdIn.readChar(); //read Char from console
switch (y) {
case 'j':
System.out.println("Do you like it to be warm?");
y=StdIn.readChar();
switch (y) {
case 'j':
System.out.println("Eggs with Bacon");
break;
case 'n':
System.out.println("Cereal");
break;
default:
System.out.println("1");
a=Default();
}
break;
case 'n':
Mittagessen();
break;
default:
System.out.println("2");
a=Default();
}
} while (a!=0);
}
public static int Default (){
System.out.println("This insert is invalid");
return 1;
}
按Enter实际上会给出两个字符: Windows回车符\\ r \\ n是由两个字符还是一个字符组成?
因此,在您的情况下,您首先阅读了J字符,而在第二个问题上,您已经输入了按下Enter按钮后的第二个字符。
我希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.