是否可以在Java条件内部使用条件

时间:2016-09-14 21:29:40

标签: java

我目前正在参加我的第一个计算机科学课程,我试图编写一个简单的程序,其中有三个可能的答案,如果用户猜到正确的答案,他们会得到一个特定的消息。程序应该工作的方式是,如果他们猜测正确的答案,他们会得到一个通用的消息说“你赢了”,然后如果他们通过猜测赢了,他们得到消息x,如果他们通过猜测赢了,他们得到消息y,如果他们通过猜测c获胜,他们得到消息c。我目前有

if (result.equal(pick)) {
    ...
} else {
    ...
}

获得"你获胜"并且"你输了#34;消息,但是有没有办法在第一行中放入另一个条件,这样如果pick是a,它们会得到消息x,依此类推?

6 个答案:

答案 0 :(得分:3)

你可以把任何你想要的语句放在if-block中,所以是的,你可以把另外一个if-elseif-else放在if-block和/或else-block中。

答案 1 :(得分:0)

是。

if (result.equal(pick)) {...
   if (pick.equal(a)){...}
   else if (pick.equal(b)){...}
   else if (pick.equal(c)){...}
   else {...}
} else {... }

答案 2 :(得分:0)

您可以使用&&将条件链接在一起,这需要所有条件都为真:

if (result.equal(pick) && result.equal(pickTwo)) {

||只要求其中一个条件为真

if (result.equal(pick) || result.equal(pickTwo)) {

或者,您可以使用switch

switch (string result){
    case "Answer":
        System.out.println("You did it!");
        break;
    case "Answer2":
        System.out.println("You did it!");
        break;
    default:
         "you lose!";
          break;
}

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

答案 3 :(得分:0)

您可以将多个条件放在if语句块中,这可能就是您要查找的内容。

// The if conditional can hold Boolean logic.
if (result.equals(pick) && result.equals(x)) {..
}
else {...}

另一种方法是将if放在if(嵌套ifs

if (result.equals(pick)) {...
  if(result.equals(x){...
  }
} else {...}

我如何处理这个问题的方法是使用哈希地图来保存我的所有答案。

Map<String,String> answers = new HashMap<String,String>(){{
  answers.put(a,x);
  answers.put(b,y);
  answers.put(c,c); 
}};

result = userInput;
if (answers.get(result) != null)
    System.out.println(answers.get(result));
else 
      System.out.println(defaultResponse);

使用hashmap是我最喜欢的路线,因为我可以使用该地图(字典)来保存所有可能的结果。它位于一个地方。对我来说,感觉更加面向对象。最后一个解决方案使用静态初始化程序并在幕后生成匿名类。

答案 4 :(得分:0)

您的想法是正确的 可以嵌套if-then-else语句。

虽然可以将bad practice嵌套到太多级别。现在,您不必担心这么多。只需确保代码具有合理的可读性和效果。

另一个可能有用的选项是使用switch statement

switch语句检查变量的值,并允许您根据值执行不同的操作。见上面的链接。

答案 5 :(得分:0)

有很多方法可以解决这个小小的练习。

如果您在多个条件链接语句之后,我还建议查看switch-case语句,尤其是Java 7+现在支持字符串,例如

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html

Switch语句更清晰。

解决此练习的另一种方法可能是创建一个HashMap,其中Key为答案,值为消息。

然后你需要做的就是寻找钥匙(答案)。如果存在,请回答“You Win”+ keys_value。

HashMap<String, String> results = new HashMap<String, String>();

results.put("A", "messgae A!");
results.put("B", "message B!");
results.put("C", "message C!");

String answer = "A";

if (results.containsKey(answer)){
    System.out.println("You Win! " + results.get(answer));
} else {
    System.out.println("You loose");
}

https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html