2017-04-21 58 views
0

在下面的代碼片段中,我試圖將stocks2 ArrayList的內容寫入stock_train.csv文件。我使用一個for循環,其循環應該通過stocks2 ArrayList中的每一個元素(調試表明stocks2的ArrayList的大小爲2955)。for循環忽略ArrayList數據集中的多個索引

不過,我跟蹤多少數據線實際上得到寫入文件與可變r。在for循環的運行時結束,r的價值只有390我已經徹底檢討這個代碼,並正在努力尋找問題,爲什麼我的數據,80%以上是沒有得到分配給文件。 (我的stock_train.csv文件只顯示390行數據,而不是2955)。是否有任何內存分配或語法問題阻止這個循環將所有的stock2的數據寫入csv文件?在此先感謝您的時間。

CSVWriter cd = new CSVWriter(new FileWriter("src/in/stock_train.csv"), ',', CSVWriter.NO_QUOTE_CHARACTER); 
    int r=0; 
    int dd=0; // Tracker variables 

    for(int g=0; g<stocks2.size(); g++) { 
     Stock q = stocks2.get(g); // stocks2: size = 2955 
     String[] temp2 = new String[4]; 
     if(q.getTimestamp().startsWith("a")) { 
      dd++; // dd: 1 
      break; // This code is included to neglect any data whose timestamp begins with 'a'. As evidenced by the value of 'dd', it only happens once. 
     } 

     temp2[0] = q.getTimestamp(); 
     temp2[1] = Double.toString(q.getPrice()); 
     temp2[2] = Double.toString(q.getVWAP(pv,v)); 
     temp2[3] = Integer.toString(q.getStatus()); // Data I want allocated to the "stocks_train.csv" file 
     r++; // r: 390 

     System.out.println(g + " " + temp2); 
     cd.writeNext(temp2); 
    } 

    cd.close(); 

    /* Comments depict values of variables after the for-loops run-time based on debugger information */ 
+0

@ Turing85:我相信你釘它在那裏。他需要「繼續」而不是「休息」。用這個答案,我會upvote! –

回答

2

您的意見建議,要跳過項時,如果相應的timestamp開始與"a"。您實際上使用break;關鍵字,其中終止循環。這也解釋了爲什麼dd的值恰好爲1

你想要的是一個continue;而不是break;。這具有程序執行繼續循環的下一次迭代的效果。

+0

輝煌!謝謝 –