• ベストアンサー

Double,Longをファイルに書き込み

以下のように、Double,Longをファイルに書き込もうとした場合、どのようにキャストをすればよろしいのでしょうか? (String)でString型への変換や Integer.parseInt等を試したのですが、できませんでした。よろしくお願いします。 import java.io.*; class test { public static void main(String[] args) { double dNumber = 3.45; long lNumber = 12345; BufferedWriter bw = new BufferedWriter(new FileWriter("test.txt")); bw.write(dNumber); bw.write(lNumber); } //end main } //end class

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

予約されてるらしいので、もう一度お邪魔します :-) ぱっと思い付くのは二つ。ネイティブな型を使うのであれば、こんな感じで。 double dNumber = 3.45; bw.write("" + dNumber); クラスを使うんであれば、toString() メソッドを使う。 Double dNumber = new Double(3.45); bw.write(dNumber.toString());   *  *  * ファイル名が .txt だから、テキストでの出力で良いのだと思うけど、 蛇足を少々。 ・このままのソースだと、数字がくっついちゃう ・BufferedWriter の close() をするように

fuyu
質問者

お礼

二回連続で回答していただきありがとうございます。 おかげさまで今回のプログラムは無事にコンパイルでき、ロジックエラーが少々あったものの、それを修正して無事に動くようになりました。 今回はありがとうございました。

その他の回答 (2)

  • akr
  • ベストアンサー率18% (32/173)
回答No.3

書きこむだけであれば、DoubleクラスやLongクラスのtoStringメソッドで、文字列の変換して書きこむってことも出来ますが、これでは桁数が解らなくなるのでセパレータを入れる等の細工が必要ですね。 あとは、RandomAccessFileクラスを使う方法もあります。 このクラスはwriteDoubleや、writeLongといった書き込みメソッドがあります。また、readDoubleや、readLongと言った読み出しメソッドもあります。

fuyu
質問者

お礼

回答ありがとうございます。 ご紹介いただいたRandomAccessFileクラスは多分今まで使ったことがないと思うので、APIで少し見てみたいと思います。

  • arata
  • ベストアンサー率49% (139/279)
回答No.1

各クラスのtoString()を使えばOKですよ。 Double dNumber1 = new Double( 3.45 ); Long lNumber1 = new Long( 12345 ); System.out.println( dNumber1.toString() ); System.out.println( lNumber1.toString() ); double dNumber2 = 3.45; long lNumber2 = 12345; System.out.println( Double.toString( dNumber2 ) ); System.out.println( Long.toString( lNumber2 ) ); 前者は、最初からオブジェクトとして書いた場合、後者は、原始型を使用していますが、DoubleクラスのクラスメソッドtoString()を使って変換しています。

fuyu
質問者

お礼

おかげさまで解決いたしました。回答ありがとうございました。

関連するQ&A