当前位置: 首页 > 面试题库 >

游标while循环返回除最后一个值以外的每个值

许彭祖
2023-03-14
问题内容

我正在使用一个while循环来遍历游标,然后输出数据库中每个点的经度和纬度值。

由于某种原因,它不会返回游标中的最后一组(或第一个,取决于我是否使用Cursor.MoveToLast)经度和纬度值。

这是我的代码:

public void loadTrack() {
SQLiteDatabase db1 = waypoints.getWritableDatabase();
Cursor trackCursor = db1.query(TABLE_NAME, FROM, "trackidfk=1", null, null, null,ORDER_BY);

    trackCursor.moveToFirst();
    while (trackCursor.moveToNext()) {
        Double lat = trackCursor.getDouble(2);
        Double lon = trackCursor.getDouble(1);
        //overlay.addGeoPoint( new GeoPoint( (int)(lat*1E6),  (int)(lon*1E6)));
        System.out.println(lon);
        System.out.println(lat);
    }
}

由此我得到:

04-02 15:39:07.416:INFO / System.out(10551):3.0 04-02 15:39:07.416:INFO /
System.out(10551):5.0 04-02 15:39:07.416:INFO / System .out(10551):4.0 04-02
15:39:07.416:INFO / System.out(10551):5.0 04-02 15:39:07.416:INFO /
System.out(10551):5.0 04-02 15: 39:07.416:INFO / System.out(10551):5.0 04-02
15:39:07.416:INFO / System.out(10551):4.0 04-02 15:39:07.416:INFO /
System.out(10551) :4.0 04-02 15:39:07.416:INFO / System.out(10551):3.0 04-02
15:39:07.416:INFO / System.out(10551):3.0 04-02 15:39:07.416:INFO
/System.out(10551):2.0 04-02 15:39:07.416:INFO / System.out(10551):2.0 04-02
15:39:07.493:INFO / System.out(10551):1.0 04-02 15:39:07.493:INFO /
System.out(10551):1.0

7套值,我应该得到8套值。

谢谢。


问题答案:

moveToNext()具有两个功能。它返回一个布尔值,这标志着有 下一个,但在同一时间它会开始移动光标。

public void loadTrack() {
SQLiteDatabase db1 = waypoints.getWritableDatabase();
Cursor trackCursor = db1.query(TABLE_NAME, FROM, "trackidfk=1", null, null, null,ORDER_BY);

    trackCursor.moveToFirst();
    do {
        Double lat = trackCursor.getDouble(2);
        Double lon = trackCursor.getDouble(1);
        //overlay.addGeoPoint( new GeoPoint( (int)(lat*1E6),  (int)(lon*1E6)));
        System.out.println(lon);
        System.out.println(lat);
    } while (trackCursor.moveToNext());
}


 类似资料:
  • 我的程序中有两个while循环。第一个是针对游戏菜单的,第二个是针对实际游戏的。如果“Gameover-Event”发生,我想返回菜单。我不知道该怎么做。

  • 问题内容: 我正在尝试将此for循环重写为for每个循环。 这就是我尝试过的 谁能指出我正确的方向?谢谢。 问题答案: 我认为您想得太多… :)

  • 问题内容: 在对象上执行“ foreach”时,我想对上一次循环迭代做一些不同的事情。我正在使用Ruby,但对于C#,Java等也是如此。 所需的输出等效于: 显而易见的解决方法是使用将代码迁移到for循环,但是for每个解决方案都感觉更优雅。在循环中编码特殊情况的最优雅方式是什么?可以用foreach完成吗? 问题答案: 如何先获取对 最后一项* 的 引用 ,然后在foreach循环中将其用于比

  • 在下面的示例中,someObjects是一个集合。如果循环中的条件匹配,我试图返回true,但这似乎无法编译。然而,当我添加“return”时,它工作得很好。我需要解决的问题是什么? 编译错误 类型Iterable中的方法forEach(Consumer)不适用于参数((obj)->{})

  • 我有一个循环,在一次迭代中,我需要发出四个AJAX请求,然后等待最后一个请求的结果。 jQuery延迟-获取链接ajax调用的结果 将jquery.when().then()链接在具有固定链端调用的循环中 如何使for循环等到异步调用成功后再继续 现在,我只知道如何将数据从先前的promise传递给另一个promise(就像这个很酷的答案),但我需要将上次AJAX调用的值返回到外部数组(并等待上次

  • 问题内容: 假设我在数据库(本例中为SQLServer 2008)中有一堆行,可用于创建方程式。 我需要想出一种方法来评估此表中的方程式。 公式1:12 + 12 = 24 公式2:(12-2)/ 2 = 5 我无法想到一种无需遍历行即可获得这些结果的方法。我知道如何执行此操作的唯一方法是使用游标或通过使用临时表和while循环。有没有更好的方法可以做到这一点?如果不是一般的话,什么将执行更好的游