有没有可能在使用Java的条件语句中包含一个条件语句

有没有可能在使用Java的条件语句中包含一个条件语句,java,Java,我目前参加了我的第一堂计算机科学课,我正试图编写一个简单的程序,其中有三个可能的答案,如果用户猜到了正确的答案,他们就会得到一条信息。程序的工作方式是,如果他们猜到了正确的答案,他们会得到一个通用的消息说“你赢了”,然后如果他们通过猜a赢了,他们会得到消息x,如果他们通过猜b赢了,他们会得到消息y,如果他们通过猜c赢了,他们会得到消息c。我现在有 if (result.equal(pick)) { ... } else { ... } 获取“youwin”和“youloss”消

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

if (result.equal(pick)) {
    ...
} else {
    ...
}
获取“youwin”和“youloss”消息,但是有没有办法在第一行中添加另一个条件,以便如果pick是a,它们将获得消息x,依此类推

是的

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

您可以将任何想要的语句放入if块中,因此可以将另一条if-elseif-else放入if块和/或else块中。

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

if (result.equal(pick) && result.equal(pickTwo)) {
|
只要求其中一个条件为真

if (result.equal(pick) || result.equal(pickTwo)) {
或者,您可以使用
开关

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;
}

您可以在一个if语句块中放置多个条件语句,这可能就是您想要的

// The if conditional can hold Boolean logic.
if (result.equals(pick) && result.equals(x)) {..
}
else {...}
另一种选择是将if放置在if中(嵌套if

我将如何处理这个问题,是通过使用哈希映射来保存我的所有答案

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);
Map answers=newhashmap(){{
答案。把(a,x);
答案。放(b,y);
答案。把(c,c);
}};
结果=用户输入;
if(answers.get(result)!=null)
System.out.println(answers.get(result));
其他的
System.out.println(defaultResponse);

使用hashmap是我最喜欢的方法,因为我可以使用该映射(字典)来保存所有可能的结果。它位于一个地方。我觉得它更面向对象。最后一个解决方案使用静态初始值设定项并在幕后生成匿名类。

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

不过,它会被认为嵌套到太多的级别。现在,你不需要太担心这些。只需确保代码具有合理的可读性和有效性

对您开放的另一个可能有用的选项是使用


switch语句检查变量的值,并允许您根据该值采取不同的操作。请参阅上面的链接。

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

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

Switch语句更简洁

解决此问题的另一种方法是创建一个HashMap,其中键是答案,值是消息

然后你需要做的就是寻找答案。如果存在,则用“You Win”+键值进行响应

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");
}
HashMap results=newhashmap();
结果。放上(“A”,“messgae A!”);
结果。放置(“B”,“消息B!”);
结果。放(“C”,“信息C!”);
字符串answer=“A”;
如果(结果,包括(答案)){
System.out.println(“你赢了!”+results.get(答案));
}否则{
System.out.println(“你松了”);
}

这是一个完美的应用程序用例。您可以将输入映射到某个响应:
map.put(“a”、“x”)
,然后您只需检索映射到任何输入的响应:
pick=“a”;map.get(pick);//返回“x”
。True。这些都可以在您的实用程序中获得。但是嵌套的if语句是一种糟糕的做法。
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");
}