for循环忽略了ArrayList数据集中的几个索引

时间:2017-04-21 17:29:00

标签: java csv arraylist

在下面的代码片段中,我试图将stocks2 ArrayList的内容写入stock_train.csv文件。我正在使用for循环,它应循环遍历stocks2 ArrayList的每个元素(调试器指示stocks2 ArrayList的大小为2955)。

但是,我正在跟踪实际使用变量r写入多少行数据。在for-loop的运行时结束时,r的值只有390.我已经彻底审查了这段代码,并且很难找到问题,为什么超过80%的我的数据没有分配给文件。 (我的stock_train.csv文件只显示390行数据,而不是2955行。是否存在阻止此for循环将所有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 */

1 个答案:

答案 0 :(得分:2)

如果相应的timestamp"a"开头,则您的评论建议您跳过条目。您实际使用break;关键字,终止循环。这也解释了为什么dd的值恰好为1

你想要的是continue;而不是break;。这会导致程序在循环的下一次迭代中继续执行。