在循环中跳过第一行

时间:2016-01-23 12:49:00

标签: java loops dataset

我想将数据添加到数据集以在图表上显示某些值。在某些文件中,第一行是列的描述(如“Timestamp”或其他内容)。我需要我的代码来测试第一行是否包含整数或浮点值,如果不是要跳过这一行并将数据添加到第二行的数据集中。

这是我的代码:

 for (int i = 0; i < listOfLists.size(); i++) {     
    for (int j = 1; j < listOfLists.get(i).size(); j++) {

        if (listOfLists.get(i).get(0).matches("\\d+(?:\\,\\d+)?") || listOfLists.get(i).get(0).matches("\\d+(?:\\.\\d+)?")) {
          datasetBar.addValue(Float.parseFloat(listOfLists.get(i).get(j).replace(",",".")),columnsLabel[i].getText(), ""+listOfLists.get(0).get(j));    
        } else if(listOfLists.get(i).get(1).matches("\\d+(?:\\,\\d+)?") || listOfLists.get(i).get(1).matches("\\d+(?:\\.\\d+)?")){
          datasetBar.addValue(Float.parseFloat(listOfLists.get(i).get(j).replace(",",".")),columnsLabel[i].getText(), ""+listOfLists.get(0).get(j));

问题是当他试图在条形图的图上表示字符串时出现错误

列表列表是列的列表。文件的每一列都会添加到列表中,每个列都会添加到 listOfLists 中。 我尝试使用 else if 块:listOfLists.get(i).remove(0)但它没有用。 (在接下来的循环中,它保留了删除剩余列表的第一行。

提前致谢!

3 个答案:

答案 0 :(得分:1)

你可以在内循环之前检查外循环:

if (i == 0 && listOfLists.get(i).get(0).matches(/\\d+(?:[\\.,]\\d+)?)/) == false) {
    continue; // skip first line
}

BTW:你不应该在迭代列表时调用remove方法,因为你会得到ConcurrentModificationException。

答案 1 :(得分:1)

可能是这样的:

for (int i = 0; i < listOfLists.size(); i++) {     
    for (int j = 0; j < listOfLists.get(i).size(); j++) {
        if (j==0){ // Only test if it is a string in position [0]
            boolean isNumber = listOfLists.get(i).get(0).matches("\\d+(?:\\,\\d+)?") || listOfLists.get(i).get(0).matches("\\d+(?:\\.\\d+)?");
            if (!isNumber) continue; // If it is not a number, skip it
        }

        // Add to database, because it is a number
        datasetBar.addValue(Float.parseFloat(listOfLists.get(i).get(j).replace(",",".")),columnsLabel[i].getText(), ""+listOfLists.get(0).get(j));    

答案 2 :(得分:0)

希望它可以帮助任何人理解。

for(int i = 0; i < n; i++){ /* i = 0 means position of i is 0 which is 1st line */
   if(i != 0 ){  /* and as our purpose is skipping first line so I will only continue when i is not equal 0 like this we can skip first line in this if block */
     continue;
   }
}