如果还有什么问题呢?

时间:2014-03-24 13:16:01

标签: java

我想知道这有什么问题:

if (q == "outside" && q1 == "not alive") {
System.out.println("bison");
}

这句话非常有效:

if (q == "outside" && q1 == "alive") {
System.out.println("bison");
}

所有包含“alive”的if语句都可以正常工作,但所有包含“not alive”的if语句都不起作用。

这是一项练习,我必须在不使用其他的情况下进行操作。

完整代码: -

import java.util.Scanner;

class age04 {
public static void main(String [] args) {

Scanner keyboard = new Scanner(System.in);

String q, q1,;

System.out.println("Two more questions, baby!");
System.out.println("Think of something and i'll try to guess it!");


System.out.println("Question 1) Does it stay inside or outside or both");
q = keyboard.next();
System.out.println("Question 1) Is it alive?");
q1 = keyboard.next();


if (q == "inside" && q1 == "alive") {
System.out.println("houseplant");
}

if (q == "inside" && q1 == "not alive") {
System.out.println("shower curtain");
}

if (q == "outside" && q1 == "alive") {
System.out.println("bison");
}
if (q == "outside" && q1 == "not alive") {
System.out.println("bison");
}

if (q == "both" && q1 == "alive") {
System.out.println("dog");
}

if (q == "both" && q1 == "not alive") {
System.out.println("cell phone");
}

}
}

4 个答案:

答案 0 :(得分:1)

使用equals()函数比较java中的字符串== function不是比较字符串:

          if (q.equals("outside") && q1.equals("not alive")) 
            {
             System.out.println("bison");
           }

试试这个:

    import java.util.Scanner;

    class age04 {
    public static void main(String [] args) {

    Scanner keyboard = new Scanner(System.in);

   String q, q1;

   System.out.println("Two more questions, baby!");
   System.out.println("Think of something and i'll try to guess it!");


   System.out.println("Question 1) Does it stay inside or outside or both");
   q = keyboard.next();
   System.out.println("Question 1) Is it alive?");
  q1 = keyboard.next();


  if (q.equals("inside") && q1.equals("alive")) {
   System.out.println("houseplant");
   }

 if (q.equals("inside") && q1.equals("not-alive")) {
 System.out.println("shower curtain");
 }

 if (q.equals("outside") && q1.equals("alive")) {
 System.out.println("bison");
}
if (q.equals("outside") && q1.equals("not-alive")) {
System.out.println("bison");
}

if (q.equals("both") && q1.equals("alive")) {
System.out.println("dog");
 }

 if (q.equals("both") && q1.equals("not-alive")) {
 System.out.println("cell phone");
          }
     }
}

答案 1 :(得分:0)

字符串应该像这样比较,

q.equals("outside")
q1.equals("alive")

答案 2 :(得分:0)

==无法比较字符串,因为您将要使用equals()函数。

equals()只会返回true或false,具体取决于您的字符串是否与给予该函数的输入相同。

答案 3 :(得分:0)

其他人都是正确的,但我想澄清为什么你需要使用equals而不是==来比较字符串。

Java中,与其他语言不同,字符串是不可变对象,而不是char值数组。在比较primitive values(例如int和char)时,==运算符可以正常工作。但是,当您在Java中使用==来比较对象时,运算符的工作方式是比较内存引用,而不是比较对象的基础值。因此,除非与每个对象关联的内存引用相同,否则根据==运算符,具有相同值的两个字符串将不相等。这就是为什么==将会比较char,因为它在原始值中寻找相等,因为没有原始值可供比较,所以它不适用于整个字符串。

equals方法是Java中所有Object类共有的方法,并指定如何检查该特定类的成员之间的相等性。 equals的默认实现可以被覆盖,以便不同类型的比较可以用于不同类型的对象(例如,通过id号比较员工,通过sku比较产品等)。我不会绕过等于等于方法(这是一个真正的痛苦才能做到正确),但它有助于理解为什么使用.equals会给出来自==的不同答案。