0
int i=0;
ContentValues values = null;

for ( SortedMap.Entry<Integer, String> entry : mapDefect.entrySet() ) {
    if( i++ < count )
        continue;
        if( i < arrlst.size() ) {
            values = new ContentValues();
            Log.d("MAP", "Id :"+entry.getKey()+"Des :"+entry.getValue()+"Co :"+ arrlst.get(i));
            values.put( MARKER_COORD, arrlst.get( i ) );
            values.put( MARKER_ID, entry.getKey() ); 
            values.put( DEFECT_DESCRIPTION, entry.getValue() );
            values.put( IMAGE_ID_F, imageID + 1 );
            Log.d( "Err", "in insertNewDefectsDescription" );
            long rowId = db.insert( TABLE_DEFECTS, null, values );
            long rowId1 = rowId;
            i++;
        }
    }

所以,我只想在 count 变量之后访问数组列表,这就是为什么: -

if(i++<count)
    continue;

但是,当我在“插入”行插入断点时,它不起作用。该行根本没有执行,因此数据没有被插入到数据库中。出了什么问题??

“值”为空。

4

4 回答 4

1

您的代码很难理解以下是我的建议

1.为什么不在 for 循环之前执行 i=count 。它会节省很多迭代

2. 例如,您的 i 可能会增加两次

if( i++ < count ) //suppose this condition is false

即使条件为假 i++ 发生任何你的 i 增加然后在里面

if( i < arrlst.size() ) {
...
i++;// It increments i again
}

这里的逻辑错了

于 2012-12-20T05:01:13.563 回答
0

问题解决了。我使用了 if 和 else。在 else 区域中,我增加了 i 变量,它工作正常。

if(i<count)
{
    ..
}
else
    i++;
于 2012-12-21T06:20:27.637 回答
0

没有看到count很难知道问题的解决方案。我的猜测是 i++ 总是小于计数,因此导致循环体的其余部分被跳过并检查下一个元素。你很可能想要。if(i++>count)...

{ }此外,对单行if块使用花括号是一种很好的做法

于 2012-12-20T04:54:34.080 回答
0

为什么在 if 条件下你的 i 也有增量?将会发生的是,每次迭代你的 i 都会增加 2。也许您想要做的是在循环之前首先将您的 i 初始化为 1,然后您可以在 if 条件中删除 i 中的 ++,或者您可以在循环结束时删除 i 中的 ++。

于 2012-12-20T04:49:22.543 回答