嵌套If语句-未接收预期的输出Java

嵌套If语句-未接收预期的输出Java,java,if-statement,nested,java.util.scanner,Java,If Statement,Nested,Java.util.scanner,这是一个向用户询问两个问题的简单程序。根据用户的输入,我们将显示对象是什么的猜测。类似于游戏“20个问题”。无论我给程序输入什么,它总是以“回形针”的形式返回myGuess的值 我试过注释每个if/else语句的内部,并将输出设置为1,2,3,但仍然是3(回形针的块)。这让我认为,我对字符串的比较在用户输入或条件逻辑的分配方面存在缺陷。。。代码如下: import java.util.Scanner; public class JavaTraining { public static

这是一个向用户询问两个问题的简单程序。根据用户的输入,我们将显示对象是什么的猜测。类似于游戏“20个问题”。无论我给程序输入什么,它总是以“回形针”的形式返回myGuess的值

我试过注释每个if/else语句的内部,并将输出设置为1,2,3,但仍然是3(回形针的块)。这让我认为,我对字符串的比较在用户输入或条件逻辑的分配方面存在缺陷。。。代码如下:

import java.util.Scanner;

public class JavaTraining {


  public static void main(String[] args) {

      Scanner keyboard = new Scanner(System.in);
      String input1,input2;
      String myGuess;

      System.out.println("TWO QUESTIONS!");

      System.out.println("Think of an object, and I'll try to guess it.\r\n");

      System.out.println("Question 1) Is it an animal, vegetable, or mineral?");
      input1 = keyboard.nextLine();

      System.out.println("\r\nQuestion 2) Is it bigger than a breadbox?");
      input2 = keyboard.nextLine();

      if (input1 == "animal"){

          if (input2 == "yes"){
              myGuess = "moose";
          }
          else{
              myGuess = "squirrel";
          }
      }
      else if (input1 == "vegetable"){
          if (input2 == "yes"){
              myGuess = "watermelon";
          }
          else{
              myGuess = "carrot";
          } 
      }
      else{
          if (input2 == "yes"){
              myGuess = "Camaro";
          }
          else{
              myGuess = "paper clip";
          } 
      }

      System.out.println("\r\nMy guess is that you are think of a "+myGuess+".\r\nI would"
              +" ask you if I'm right, but I don't actually care."+input1+input2);
      }
  }
对字符串使用.equals()而不是==。Java字符串是对象而不是基本数据类型

改变这个

     if (input1 == "animal")

看看这个

对字符串使用.equals()而不是==。Java字符串是对象而不是基本数据类型

改变这个

     if (input1 == "animal")


看看这个

@makoto既然你已经将这个问题标记为重复问题,我是否应该删除它?或者我应该离开它,因为它有一个不同的上下文,仍然提供了一个教育性的答案?我没有注意到上下文;每当有人对字符串使用
==
时,答案通常是相同的。这当然不是一个坏问题,但我不想让你保留它。@makoto既然你已经将这个问题标记为重复问题,我应该删除它吗?或者我应该离开它,因为它有一个不同的上下文,仍然提供了一个教育性的答案?我没有注意到上下文;每当有人对字符串使用
==
时,答案通常是相同的。这不一定是个坏问题,但我不想让你一直问下去。