我想知道这有什么问题:
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");
}
}
}
答案 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会给出来自==的不同答案。