Java 数据库插入未发生 inti=0; ContentValues=null; 对于(SortedMap.Entry:mapDefect.entrySet()){ if(i++

Java 数据库插入未发生 inti=0; ContentValues=null; 对于(SortedMap.Entry:mapDefect.entrySet()){ if(i++,java,android,android-sqlite,Java,Android,Android Sqlite,因此,我只想在count变量之后访问arraylist,这就是为什么:- int i=0; ContentValues values = null; for ( SortedMap.Entry<Integer, String> entry : mapDefect.entrySet() ) { if( i++ < count ) continue; if( i < arrlst.size() ) { valu

因此,我只想在count变量之后访问arraylist,这就是为什么:-

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++;
        }
    }

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

查看
count
很难知道问题的解决方案。我猜i++总是小于count,从而导致跳过循环体的其余部分并检查下一个元素。您很可能需要。
if(i++>count).


此外,如果

您的代码不难理解,则最好对一行
使用大括号
{}
以下是我的建议

1.为什么不在for循环之前执行i=count。这样可以节省大量迭代次数

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

if(i++<count)
    continue;
if(i++
即使条件为false,i++也会发生任何i增加的情况,然后在内部

if( i++ < count ) //suppose this condition is false
if(i
逻辑错误,问题解决了。 我使用了if和else,在else区域我增加了I变量,效果很好

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

if(继续)语句跳过for、while或do-while循环的当前迭代。因此,if(i++您应该调试并检查
count
arrlist.size()
mapDefect.size()
)的值。请注意,您的插入逻辑只会因此而跳闸(窄?)当索引变量i大于
count
,但小于
arrlist.size()时的窗口
。count在哪里设置?这段代码看起来有点破旧。为什么不在for循环之前执行
i=count
。这将节省大量迭代。count在很久以前就设置好了。并且计数中的值是正确的。执行i=count并没有解决问题。出现了一些不规则的问题!!我想增加到count为止不执行任何操作。然后,i将递增直到结束。i和count后面的逻辑似乎正确。调试时,控件将在正确的时间进入/退出。但是if(iif(i<count) { .. } else i++;