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];
}

なぜこれが機能しないのか誰かに教えてもらえますか?私はファイルから読んでいます。お金を文字列から2倍に変換しようとしていますが、

possible loss of precision. 
required: int
found: double

所有者のアカウントもマイナスになる可能性があるので、ダブルが必要です。

4

5 に答える 5

5

-これappartmentはタイプの配列であるようですAppartment。ここで、指定されたAppartementのオブジェクトフィールドmoneyintタイプです。

-しかし、あなたはそれに値を型として割り当てているので、doubleからintへの明示的なキャストdoubleが必要になります、

例えば:

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

于 2012-10-08T11:05:11.400 に答える
1

どうやらappartment[i].money= Double.parseDouble(word[2]);ここで問題です。お金の種類がである場合はint、word [2]の値をintlike にキャストするかappartment[i].money = (int(Double.parseDouble(word[2])); 、次のような整数として解析する必要があります。 appartment[i].money= Integer.parseInt(word[2]);

于 2012-10-08T11:08:18.410 に答える
1

これを使って、

  appartment[i].money = Integer.parseInt(word[2]);
于 2012-10-08T11:12:08.550 に答える
0

Javaでお金を表すときのベストプラクティスは、BigDecimalを使用することです。詳細については、 http: //www.javapractices.com/topic/TopicAction.do?Id=13を参照してください。

于 2012-10-08T11:07:06.960 に答える
0

あなたはおそらくお金がintであるというアパートの定義を持っているでしょう、それを2倍に変えてみてください...

于 2012-10-08T11:03:52.623 に答える