2016-08-24 139 views
1

雙閱讀我這裏,數據是這樣寫的.txt文件:從.txt文件

ZONEIDFROM; ZONEIDTO; DISTANCETYPE; FACILITYID;距離;
1; 2; C; HF; 9,416667;

我想如果zoneidfrom = 1和zoneidto = 2

一切都似乎是在我的代碼好,除了這是一個雙重的距離返回的距離。

public void Load(String filename, int zoneidfrom, int zoneidto, String mode) throws Exception{ 
    queue.clear(); 
    int from,to; 
    double dist; 
    String c_or_l; 

    BufferedReader br = new BufferedReader(new FileReader(filename)); 
    String ligne = br.readLine(); //First line read 
    while(ligne != null){ 
     ligne = br.readLine(); //First line read 
     String [] tab = ligne.split(";"); 
     ArrayList<Double> d = new ArrayList<>(); 
     d.add(Double.parseDouble(ligne)); 
     from = Integer.parseInt(tab[0]); 
     to = Integer.parseInt(tab[1]); 
     c_or_l = tab[2]; 
     dist = d.get(4); 

     if(zoneidfrom == from && zoneidto == to && c_or_l.equals(mode));{ 
      distance(dist); 
     } 
    }  
} 
public double distance(double db_distance){ 
    return db_distance; 
} 

回答

2

首先,您的代碼沒有解析double的正確字符串值。你應該解析tab[4],而不是整條線。

其次,double值包含小數點分隔符的逗號。 Double.parseDouble()不考慮區域設置。

您應該使用NumberFormat解析double,而使用適當的Locale

查看this answer瞭解更多詳情。

1

ligne是字符串,它將是「1; 2; C; HF; 9,416667;」在第一個while循環中,現在你試圖解析它來加倍,顯然它會拋出數字格式異常。 對於需要的距離,Double.parseDouble(tab [4] .replace(「,」,「。」))