嗨,这是我的第二个问题。
我有下表
|-----|-------|------|------|
|._id.|..INFO.|.DONE.|.LAST.|
|..1..|...A...|...N..|......|
|..2..|...B...|...Y..|..L...|<--- cursor.moveToPosition((int)_id-1);
|..3..|...C...|...Y..|......|
|..4..|...D...|...Y..|......|
|..5..|...E...|...N..|......|
|..6..|...F...|...N..|......|
|-----|-------|------|------|
我使用代码:
cursor = db.query(TABLE_NAME, new String[]{INFO,DONE,LAST},null,null,null,null,null);
cursor.moveToPosition((int)_id-1);
String Yval = cursor.getString(cursor.getColumnIndex(DONE));
do
{
cursor.moveToNext();
Yval= cursor.getString(cursor.getColumnIndex(DONE));
}
while (Yval=="Y");
s = Yval;
我最初将光标指向我访问的最后一行,然后循环遍历done列中的值,如果列的行中有y,则不停止。当n出现在循环中时,循环应该停止。
但没用。
伊瓦尔从不等于“Y”。所以光标执行一个“movetonext”,然后退出循环,因为它不会将yval读为“y”。
(我还将所有内容都改为整数。1代表N,0代表Y,但仍然不起作用)
我在这里做错什么了?
最佳答案
因此,如果要比较equals()
while (Yval.equals("Y"));
你应该知道:
Strings
参考相等性测试。==
值相等测试。所以你想测试yval
equals
是否有y值,所以你必须使用String
方法。你的方法不起作用,因为:
String data = "lorem";
data == "lorem" ==> FALSE
data.equals("lorem") == TRUE
还要确保
equals()
有有效的行,这样就需要添加到condition also cursor.movetonext()中cursor.moveToNext() && (Yval.equals("Y")
你还需要治疗
Cursor
所以把它加到条件中。