【问题标题】:How to ask a question repeatedly until I get the right answer as a character如何反复问一个问题,直到我作为一个角色得到正确的答案
【发布时间】:2021-07-04 09:17:45
【问题描述】:

我应该问“选择”,用户应该输入 a 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(" !");
}

【问题讨论】:

  • 在while循环外声明char eingabe = in.readChar();

标签: java loops char


【解决方案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(" !");

【讨论】:

  • 嘿,谢谢你,我修正了我的错误,但仍有 1 件事无法解决。 char eingabe = '';不起作用,因为“错误:空字符文字”
  • 然后您应该使用您的代码不接受的字符(不是 a、b 或 c)。
【解决方案2】:

我觉得你eingabe != 'a' || eingabe != 'b' || eingabe ||'c'的表达有问题。也许你的意思是eingabe != 'a' || eingabe != 'b' || eingabe != 'c'。我认为为了在用户输入其他内容时继续循环,您需要使用&& 而不是||。 do while 循环非常适合您的用例:

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');

【讨论】:

    【解决方案3】:

    您的eingabe 变量应该在循环之外定义,以便您的其余代码可以访问它。请注意不要使用在条件中检查的值来初始化它,或者更好地使用 do-while。

    我将您的代码切换为使用常规 System.in 和 System.out,因为我不知道 in 和 Out 是什么。最后但并非最不重要的一点是,您的输出条件错误,您应该再次询问该值是否与所有预期值不同,而不是是否与任何预期值不同(始终为真):

            char eingabe;
            do {
                System.out.println("Bitte auswaehlen: ");
                eingabe = (char) System.in.read();
            } while (eingabe != 'a' && eingabe != 'b' && eingabe != 'c');
    
            System.out.print("Gewaehlt ");
            if (eingabe == 'a')
                System.out.print("CAPPUCCINO");
            if (eingabe == 'b')
                System.out.print("MOKKA");
            if (eingabe == 'c')
                System.out.print("VERLAENGERTER");
            System.out.print(" !");
    

    【讨论】:

    • 这很有效,非常感谢。是的,我没想到使用 && 或 ||但是当它不编译并且你无法测试你的代码是否有意义时会更难。
    • 实际上重复时会打印两次。第一次它应该只打印一次。 Bitte auswaehlen: d Bitte auswaehlen: Bitte auswaehlen: f Bitte auswaehlen: Bitte auswaehlen: 你知道为什么会这样吗?
    猜你喜欢
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    相关资源
    最近更新 更多