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];
}
有人能告诉我为什么这不起作用吗?我正在读取文件。我试图将钱从字符串转换为双倍,但它说
possible loss of precision.
required: int
found: double
我需要双打,所以所有者帐户也可能会消极。
答案 0 :(得分:5)
- appartment
似乎是Appartment
类型的数组,其中名为money
的Appartement对象字段为int
类型。
- 但是您将它的值设为double
类型,因此您需要从double到int 显式强制转换,
<强>例如强>
appartment[i].money= (int) Double.parseDouble(word[2]);
答案 1 :(得分:1)
显然appartment[i].money= Double.parseDouble(word[2]);
是个问题。如果货币类型为int
,您应该将word [2]的值转换为int
appartment[i].money = (int(Double.parseDouble(word[2]));
或者你应该解析为类似的整数
appartment[i].money= Integer.parseInt(word[2]);
答案 2 :(得分:1)
使用此,
appartment[i].money = Integer.parseInt(word[2]);
答案 3 :(得分:0)
你可能在公寓的定义中有钱是int,试着改变它加倍......
答案 4 :(得分:0)
在Java中表示钱的最佳做法是使用BigDecimal。有关详细信息,请参阅:http://www.javapractices.com/topic/TopicAction.do?Id=13。