我目前正在参加我的第一个计算机科学课程,我试图编写一个简单的程序,其中有三个可能的答案,如果用户猜到正确的答案,他们会得到一个特定的消息。程序应该工作的方式是,如果他们猜测正确的答案,他们会得到一个通用的消息说“你赢了”,然后如果他们通过猜测赢了,他们得到消息x,如果他们通过猜测赢了,他们得到消息y,如果他们通过猜测c获胜,他们得到消息c。我目前有
if (result.equal(pick)) {
...
} else {
...
}
获得"你获胜"并且"你输了#34;消息,但是有没有办法在第一行中放入另一个条件,这样如果pick是a,它们会得到消息x,依此类推?
答案 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