【问题标题】:Continuously ask for a user input不断要求用户输入
【发布时间】:2018-03-17 09:25:53
【问题描述】:

我有两个可供用户输入的选项,我想要完成的是,如果用户没有输入任何一个输入,程序将不断地再次询问他们,直到他们输入一个有效的输入。这是现在的代码

String userLIB = user_input.next();
    if (userLIB.contentEquals(UBC.acro)){
        printDetails(UBC);
    } else {
        if (userLIB.contentEquals(ORL.acro)){
            printDetails(ORL);
        } else {
            while (!userLIB.contentEquals(UBC.acro) || !userLIB.contentEquals(ORL.acro)){
            System.out.println("Invalid input");
            break;
            }
        }
    }

我有一个中断来防止代码无限循环“无效输入”,但它现在只是结束程序,这不是我想要发生的。有没有办法让程序回到 if 语句的开头?

【问题讨论】:

  • 您应该循环所有代码,不是吗?显然你知道如何使用循环。您是否尝试过使用一个返回程序顶部?
  • 就像@Carcigenicate 建议的那样,将您的代码包装到另一个循环中,但不要忘记有一个“退出”选项,除非您可以粗暴地停止程序
  • while 与直接 break 的行为与 if 相同。
  • 如何在这段代码中加入另一个循环?我会从另一个 if 语句开始吗?
  • @MemeBoi 我添加了一个答案。请看一下。

标签: java string loops if-statement while-loop


【解决方案1】:

当满足无效输入条件时,您正在破坏您的代码。 执行以下操作,

String userLIB = "";
do {
    userLIB = user_input.next();
    if (userLIB.contentEquals(UBC.acro)){
        printDetails(UBC);
    } else if (userLIB.contentEquals(ORL.acro)) {
        printDetails(ORL);
    } else {
        System.out.println("Invalid input. Try again!");
    }
} while (!userLIB.contentEquals(UBC.acro) || !userLIB.contentEquals(ORL.acro));

这会尝试获取仅有的 2 个可能的输入并终止循环。 Else 将一次又一次地循环,直到提供所需的输入。

【讨论】:

    【解决方案2】:

    我在@Carcigenicate 的帮助下想通了,我在整个代码之外放置了一个while 循环,然后放置了一个userLIB = user_input.next();在不正确的 if 语句中。还要感谢@Sridhar 给出的答案也有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-24
      • 2015-07-21
      • 2021-05-31
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多