【问题标题】:In Java, how can I make my program only ask the next inquiry if the previous inquiry's value is true?在Java中,如果前一个查询的值为真,我怎样才能让我的程序只询问下一个查询?
【发布时间】:2011-10-16 19:11:59
【问题描述】:

例如,我问一个人是否想要冰淇淋。如果他们说是,(或输入 1)我希望它问下一个问题,“你喜欢哪种口味?”,但如果他们说不,我希望它一起跳过下一个问题并继续任何问题在那个被作废的那个之后,例如“你喜欢吐司吗?”

我尝试使用 if 语句,但运气不佳。

我基本上是这样写的:

if (answer == 1) {
    System.out.print("Which flavour would you like?");
    flavour = keyboard.nextLine;
}
else {}

但是编译器很恼火,因为我在代码中进一步使用了值风格,这似乎是因为它在 if 语句中,程序难以访问它。 (因为在代码的更下方,我会根据人们选择的冰淇淋口味提出问题。

非常感谢。

【问题讨论】:

    标签: java if-statement


    【解决方案1】:

    好吧,您需要声明 flavour 有一个值,例如空:

    String flavour = null;
    if (answer == 1) {
        ...
    }
    

    否则,如果您尝试从 flavour 读取,编译器将无法确定您是否为其赋予了值。

    但是,理想情况下,您应该尝试 设计您的代码,以便清楚地表明您不会使用该变量,除非它被赋予了一个有用 值。您说您稍后会在代码中使用该变量 - 您是否确保仅在您实际上提出问题时才使用它?您可以在请求后立即使用该值吗?虽然给出一个像 null 这样的“虚拟”值会阻止编译器抱怨,但如果你可以构造你的代码,这样一开始就不需要虚拟值,那就更好了。

    【讨论】:

      【解决方案2】:

      问题是如果answer 不是1,则flavour 没有设置为任何值。你期望它做什么?

      要解决这个问题,您需要在if 之前或else 块中对一个值赋值。您可能需要稍后检查它是否合理。

      【讨论】:

        【解决方案3】:

        如果你在 if 语句之外声明和初始化风味,你应该没问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-25
          • 1970-01-01
          • 1970-01-01
          • 2021-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多