2012-10-08 102 views
0
for (int i = 0; i < 18; i++) { 
    line = file.readLine(); 
    String[] word = line.split(";"); 

    appartment[i] = new Appartment(); 
    appartment[i].floor= Integer.parseInt(word[0]); 
    appartment[i].name = word[1]; 
    appartment[i].money= Double.parseDouble(word[2]); 
    appartment[i].owner= word[3]; 
} 

有人可以告訴我爲什麼這不起作用嗎?我從文件中讀取。我試圖將錢從字符串轉換爲雙倍,但它說爲什麼將字符串轉換爲double可能會導致精度損失?

possible loss of precision. 
required: int 
found: double 

我需要雙打,所以業主帳戶也可以消極。

+5

* 「需要加倍,所以業主帳戶也可以消極」*一個'int'可能是負面的。請注意,貨幣值通常應表達爲int值(以美分爲單位),也可以避免浮點數字表示的恐怖。 –

+1

更不用說,浮點類型不應該用於存儲財務價值,如金錢... –

+0

更不用說,公寓拼寫錯誤。 –

回答

5

-似乎appartmentAppartment類型的數組,其中公寓的對象字段中指定moneyint類型。

-但你assingnig它的價值爲double類型,所以你需要一個明確的轉換從double到int,

如:

appartment[i].money= (int) Double.parseDouble(word[2]);

+0

它的工作!謝謝! – Lisa

+0

不客氣Lisa –

0

你可能在公寓的defenition錢爲int,試圖改變它一倍...

1

顯然appartment[i].money= Double.parseDouble(word[2]);這裏是一個問題。如果貨幣類型爲int,要麼你應該字[2]的值轉換爲intappartment[i].money = (int(Double.parseDouble(word[2])); 還是應該解析成整數像 appartment[i].money= Integer.parseInt(word[2]);

1

利用這一點,

appartment[i].money = Integer.parseInt(word[2]);