我正在尝试设置条件并设置true或false,如下所示,但它始终返回false。
boolean checked = (categoriesCursor.getString(3) == "1") ? true
: false;
Log.i("Nomad",categoriesCursor.getString(3)+ " "+checked);
当我尝试输出值时,我得到以下内容。
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 1 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
01-12 00:05:38.072: I/Nomad(23625): 0 false
答案 0 :(得分:39)
它始终返回false
因为您正在比较引用,而不是字符串。你的意思可能是:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true
: false;
这恰好相当于:
boolean checked = categoriesCursor.getString(3).equals("1");
如果categoriesCursor.getString(3)
可能是null
,那么这样做会更安全:
boolean checked = "1".equals(categoriesCursor.getString(3));
答案 1 :(得分:3)
使用equals
代替==
boolean checked = (categoriesCursor.getString(3).equals("1"));
答案 2 :(得分:3)
尝试使用此
(categoriesCursor.getString(3).equals("1")) ? true : false;
答案 3 :(得分:1)
使用categoriesCursor.getString(3).equals("1")
代替==
答案 4 :(得分:1)
首先,要比较字符串,您必须使用equals
方法:
categoriesCursor.getString(3).equals("1")
其次,这里不需要三元运算符。 equals
已经导致布尔值,所以只需指定它:
boolean checked = categoriesCursor.getString(3).equals("1");
答案 5 :(得分:1)
将其更改为:
boolean checked = (categoriesCursor.getString(3).equals("1")) ? true : false;
不要使用==
来比较字符串内容。
注意:无法在JAVA中重载或修改==
运算符。如果您使用object1 == object2
,其中object1
和object2
是字符串或任何其他对象,您将检查引用是否指向相同的基础对象。这不会比较内容。
答案 6 :(得分:1)
首先,不需要三元运算符。然后,您必须使用equals()
代替==
。因为==
运算符检查对象的引用是否相等。