是否有可能有一个条件中使用Java条件

问题描述 投票:1回答:6

我目前就读于我的第一次计算机科学类,我想编写一个简单的程序,其中有三个可能的答案,如果用户猜测正确答案,他们得到了一定的信息。程序应该工作的方式是,如果他们猜测正确答案,他们得到一个通用的消息说:“你赢了”,然后如果他们赢得了猜测,他们得到消息X,如果他们赢得了猜测B,他们得到消息ÿ ,如果他们赢得了猜测C,他们得到的消息c。我现在有

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

获得“你赢了”和“你输”的消息,但有把第一行内的另一个条件,这样,如果选秀是,他们得到消息,X,等等的方法吗?

java
6个回答
3
投票

你可以把你的,如果块想要的任何声明,所以是的,你可以把另一个IF-ELSEIF-否则,如果块和/或其他区块内。


0
投票

是。

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

0
投票

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

这将被认为虽然对bad practice巢层次太多。现在,你不必担心这么多。只要确保代码是相当可读的作品。

打开你的其他潜在有用的选项是使用一个switch statement

switch语句检查变量的值,并允许您利用基于价值不同的动作。见上面的链接。


0
投票

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

如果你有多个条件语句连接后,我也建议看的switch-case语句,尤其是像Java 7+现在支持字符串如

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

switch语句更干净。

解决这个运动的另一种方法可以创建的键是答案,和值是该消息的HashMap中。

然后,所有你需要做的是寻找钥匙(答案)。如果存在,则与“你赢了” +的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


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


0
投票

你可以把在if语句块多条件语句,这可能是你在找什么。

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

另一种替代方法是在如果(嵌套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的是我最喜欢的路线,因为我可以使用地图(字典),以容纳所有可能的结果。它位于一个地方。感觉更加的面向对象的给我。最后的解决方案使用一个静态初始化并生成幕后匿名类。

© www.soinside.com 2019 - 2024. All rights reserved.