Pet*_*mes 5 android while-loop
嗨这是我的第二个问题.我有下表
|-----|-------|------|------|
|._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..|......|
|-----|-------|------|------|
Run Code Online (Sandbox Code Playgroud)
我用的代码是:
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;
Run Code Online (Sandbox Code Playgroud)
我最初将光标指向我访问的最后一行,然后我创建一个循环来遍历DONE列中的值,而不是在列的行中有Y的情况下停止.当N出现在循环中时,循环应该停止.但它不起作用.Yval永远不等于"Y".因此,光标会执行一个'moveToNext',然后退出循环,因为它不会将Yval读为"Y".(我也将所有内容都更改为整数.1表示N,0表示Y,但仍然无效)所以我在这里做错了什么?
因此,equals()如果要进行比较,则必须使用方法Strings
while (Yval.equals("Y"));
Run Code Online (Sandbox Code Playgroud)
你应该知道:
== 参考平等测试.equals 测试价值平等.所以你想测试Yval String是否有Y值,所以你必须使用equals()方法.
你的方法不起作用:
String data = "lorem";
data == "lorem" ==> FALSE
data.equals("lorem") == TRUE
Run Code Online (Sandbox Code Playgroud)
另外,还要确保您Cursor有有效的行,所以你需要添加也调理cursor.moveToNext()等等
cursor.moveToNext() && (Yval.equals("Y")
Run Code Online (Sandbox Code Playgroud)
你也需要对待,cursor.moveToPosition((int)_id-1)所以将它添加到条件.