我目前就读于我的第一次计算机科学类,我想编写一个简单的程序,其中有三个可能的答案,如果用户猜测正确答案,他们得到了一定的信息。程序应该工作的方式是,如果他们猜测正确答案,他们得到一个通用的消息说:“你赢了”,然后如果他们赢得了猜测,他们得到消息X,如果他们赢得了猜测B,他们得到消息ÿ ,如果他们赢得了猜测C,他们得到的消息c。我现在有
if (result.equal(pick)) {
...
} else {
...
}
获得“你赢了”和“你输”的消息,但有把第一行内的另一个条件,这样,如果选秀是,他们得到消息,X,等等的方法吗?
你可以把你的,如果块想要的任何声明,所以是的,你可以把另一个IF-ELSEIF-否则,如果块和/或其他区块内。
是。
if (result.equal(pick)) {...
if (pick.equal(a)){...}
else if (pick.equal(b)){...}
else if (pick.equal(c)){...}
else {...}
} else {... }
你的想法是正确的,可以嵌套的if-then-else语句。
这将被认为虽然对bad practice巢层次太多。现在,你不必担心这么多。只要确保代码是相当可读的作品。
打开你的其他潜在有用的选项是使用一个switch statement
switch语句检查变量的值,并允许您利用基于价值不同的动作。见上面的链接。
有很多方法可以解决这个小练习。
如果你有多个条件语句连接后,我也建议看的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
你可以连在一起的条件使用&&
要求所有条件为真:
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
你可以把在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的是我最喜欢的路线,因为我可以使用地图(字典),以容纳所有可能的结果。它位于一个地方。感觉更加的面向对象的给我。最后的解决方案使用一个静态初始化并生成幕后匿名类。