2016-01-23 141 views
0

我想將數據添加到數據集以在圖上顯示一些值。在某些文件中,第一行是列的描述(如「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中。 我試圖在上使用其他的如果塊:listOfLists.get(i).remove(0)但它沒有奏效。 (在下一循環它依然古色古香去除殘留名單的第一行提前

感謝

+0

爲什麼從j = 1開始第二次迭代而不是j = 0? –

回答

1

可以在外環檢查,內環前:!

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

BTW:你應該。不叫remove方法,而迭代列表,因爲你會得到ConcurrentModificationException的

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));