2015-10-27 27 views
0

我有一個通過解析文件中的數據創建的2d數組。該方法將數據的每個部分發送到一個字符串。我試圖將數組從字符串轉換爲浮點。除了一列以外,一切都打印完好。將字符串轉換爲浮點會產生意料之外的回報。 Java

例如:

2015/10/21,113.7600,42276880.0000,114.0000,115.5800,113.7000 

2015/10/20,113.7700,48929200.0000,111.3400,114.1700,110.8200 

2015/10/19,111.7300,29723750.0000,110.8000,111.7500,110.1100 

轉換爲:

0.0 113.76 4.227688E7 114.0 115.58 113.7 

0.0 113.77 4.89292E7 111.34 114.17 110.82 

0.0 111.73 2.972375E7 110.8 111.75 110.11 

日期列是爲了返回0.0但第3列返回一個響應怪異。這是我的代碼或數據的錯誤嗎?

將字符串數組浮點陣列方法

public void createDataArray(String [] [] n){ 
    for(int x=0;x<n.length;x++) { 
     for(int y=0;y<n [x].length;y++) { 
      switch(y) { 
      case 0: 
       dataArray[x] [y] = 0; 
       break; 
      case 1: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      case 2: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      case 3: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      case 4: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      case 5: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      case 6: 
       dataArray[x] [y] = new Float(n[x] [y]); 
       break; 
      } 
     } 
    } 
} 

新陣列打印方法

public void printArray() { 
    for(int x=0;x<dataArray.length;x++) { 
     for(int y=0;y<dataArray[x].length;y++) { 
      System.out.printf("%s ", dataArray[x] [y]); 
     } 
     System.out.println(); 
    } 
} 

如果您想更多的信息,就問我。我相當肯定它的數據有問題,但即使給它假的值,它仍然會返回類似的響應。

+0

你有沒有嘗試存儲在一個原始的浮點數組,然後Float.parseFloat(dataArray [x] [y]); – JH95

回答

1

根據您的要求,您必須使用%f來打印浮動/雙重。

實施例:

String[] floatNumbers = {"42276880.0000", "48929200.0000","29723750.0000"}; 

for (String s: floatNumbers) { 
    Float temp = new Float(s); 
    System.out.printf("%f\t", temp); 
    System.out.println(temp); 
} 

輸出:

42276880.000000 4.227688E7

48929200.000000 4.89292E7

2972​​3750.000000 2.972375E7

Docs

+0

謝謝。不能相信簡單的錯誤會導致頭痛一個小時。 – rscarth

+0

@RylandScarth不用客氣 – sam