提问人:Ciro Mertens 提问时间:4/8/2021 更新时间:11/17/2023 访问量:50
如何反复问一个问题,直到我作为一个角色得到正确的答案
How to ask a question repeatedly until I get the right answer as a character
问:
我应该问“选择”,如果用户输入其他内容,则应键入 b 或 c,它应该重复该问题。我什至不明白我是怎么做到的,然后我还有另一个问题:稍后我应该打印出所选的咖啡种类,但因为“eingabe”在一段时间内,或者如果身体,当我以后想使用它时无法识别它。如何解决这个问题?还是我应该使用另一个循环?字符甚至在这里使用正确的类型吗? 提前谢谢。
while(eingabe != 'a' || eingabe != 'b' || eingabe ||'c') {
Out.println("Bitte auswaehlen: ");
char eingabe = in.readChar();
}
Out.print("Gewaehlt ");
if (eingabe == 'a') Out.print("CAPPUCCINO");
if (eingabe == 'b') Out.print("MOKKA");
if (eingabe == 'c') Out.print("VERLAENGERTER");
Out.print(" !");
}
答:
1赞
DorianHUN
4/8/2021
#1
如前所述,您应该在循环之外声明它。当您检查 c 时,您在循环中输入错误:
char eingabe = '';
while(eingabe != 'a' && eingabe != 'b' && eingabe != 'c') {
Out.println("Bitte auswaehlen: ");
eingabe = in.readChar();
}
Out.print("Gewaehlt ");
if (eingabe == 'a') Out.print("CAPPUCCINO");
if (eingabe == 'b') Out.print("MOKKA");
if (eingabe == 'c') Out.print("VERLAENGERTER");
Out.print(" !");
评论
0赞
Ciro Mertens
4/8/2021
嘿,谢谢,我纠正了我的错误,但仍然有一件事没有解决。Char Eingabe = '';不起作用,因为“错误:空字符文字”
0赞
DorianHUN
4/9/2021
然后,您应该使用代码不接受的字符(不是 a、b 或 c)。
0赞
Rohan Kumar
4/8/2021
#2
我觉得你的表情有问题.也许你的意思是.我认为为了在用户键入其他内容时继续循环,您需要使用而不是 .do while 循环非常适合您的用例:eingabe != 'a' || eingabe != 'b' || eingabe ||'c'
eingabe != 'a' || eingabe != 'b' || eingabe != 'c'
&&
||
char eingabe;
Scanner in = new Scanner(System.in);
do {
System.out.println("Bitte auswaehlen: ");
eingabe = in.next().toCharArray()[0];
} while (eingabe != 'a' && eingabe != 'b' && eingabe != 'c');
1赞
Helluys
4/8/2021
#3
变量应该在循环之外定义,以便代码的其余部分可以访问它。请注意,不要使用条件中检查的值来初始化它,或者最好改用 do-while。eingabe
我将您的代码切换为使用常规 System.in 和 System.out,因为我不知道 in 和 out 是什么。最后但并非最不重要的一点是,您的输出条件是错误的,您应该再次询问该值是否与所有预期值不同,而不是是否与任何值不同(这始终为真):
String eingabe;
try (final InputStreamReader isr = new InputStreamReader(System.in)) {
try (final BufferedReader in = new BufferedReader(isr)) {
do {
System.out.println("Bitte auswaehlen: ");
eingabe = in.readLine();
} while (!"a".equals(eingabe) && !"b".equals(eingabe) && !"c".equals(eingabe));
}
}
System.out.print("Gewaehlt ");
switch (eingabe) {
case "a" -> System.out.print("CAPPUCCINO");
case "b" -> System.out.print("MOKKA");
case "c" -> System.out.print("VERLAENGERTER");
default -> throw new IllegalStateException("Unexpected eingabe: " + eingabe);
}
System.out.print(" !");
编辑:直接从 stdin 读取字符是相当原始的,当它读取“\n”字符时,你会得到第二个“Bitte auswaehlen:”。你会想要一个适当的逐行干净地阅读stdinBufferedReader
评论
0赞
Ciro Mertens
4/8/2021
这很有效,谢谢。是的,我没有在使用 && 或 ||但是当它不编译时就更难了,你无法测试你的代码是否有意义。
0赞
Ciro Mertens
4/8/2021
实际上,当它重复它时,它会打印出两次。第一次它只打印一次,因为它应该这样做。Bitte auswaehlen: d Bitte auswaehlen: Bitte auswaehlen: f Bitte auswaehlen: Bitte auswaehlen: 你知道为什么会这样吗?
评论
char eingabe = in.readChar();