2012-12-20 70 views
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++; 
     } 
    } 

所以,我想只有計數變量後,訪問ArrayList中,這就是爲什麼: -數據庫插入不會發生

if(i++<count) 
    continue; 

但是,當我在「插入」插入一個破發點行,它不工作。該行根本沒有執行,因此數據沒有被插入到數據庫中。出了什麼問題?

'值'爲空。

+0

continue語句跳過for,while或do-while循環的當前迭代。所以如果(i ++ rajpara

+0

你應該調試和檢查'count','arrlist.size()'和' mapDefect.size()'。請注意,當您的索引變量i大於'count',但小於'arrlist.size()'時,您的插入邏輯將僅跳過該(狹窄?)窗口。 – Perception

+0

計數在哪裏設置?無論如何這個代碼看起來有點破舊。 –

回答

1

你的代碼是有點難以理解 以下是我的建議

1.爲什麼你不就i =在for循環之前計數。這將節省大量重複

2.你我可例如兩次加

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

即使條件是假的我++發生任何你我就會增一則內部

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

邏輯變得錯在這裏

+0

我希望我能夠增加數到無所事事。在此之後,我將增加到最後。 i和count的邏輯似乎是正確的。在調試時,控制器會在正確的時間進/出。但是,如果(i

0

爲什麼你在if條件下你的i還有增量?將會發生的是,每次迭代你都會增加2。也許你想要做的就是在循環之前先將你的i初始化爲1,然後你可以在if條件中刪除i中的++,或者你可以在循環結束時刪除i中的++。

+0

但它沒有增加2.它每次正確遞增1。當條件失敗時,它開始跳過continue語句並開始檢查下一個條件。在這種情況下,直到i ++的語句全部被跳過。 –

0

沒有看到count很難知道問題的解決方案。我的猜測是i ++總是小於count,因此導致循環體的其餘部分被跳過並且下一個元素被檢查。你很可能想要。 if(i++>count)...

而且這是一個很好的做法是使用大括號{ }一行if

+0

nope,計數是正確的,這是之前設置的。我想跳過迭代直到'count'th數字。之後我想開始從arraylist和mapentry中提取值。 –

+0

@PramodSetlur你可以發佈完整的方法代碼嗎?我們無法知道計數是多少。 – Woot4Moo

0

問題解決了。 我用if和else。在其他地區,我增加了我的變量,它工作得很好。

if(i<count) 
{ 
    .. 
} 
else 
    i++; 
相關問題