- ベストアンサー
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
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
予約されてるらしいので、もう一度お邪魔します :-) ぱっと思い付くのは二つ。ネイティブな型を使うのであれば、こんな感じで。 double dNumber = 3.45; bw.write("" + dNumber); クラスを使うんであれば、toString() メソッドを使う。 Double dNumber = new Double(3.45); bw.write(dNumber.toString()); * * * ファイル名が .txt だから、テキストでの出力で良いのだと思うけど、 蛇足を少々。 ・このままのソースだと、数字がくっついちゃう ・BufferedWriter の close() をするように
その他の回答 (2)
- akr
- ベストアンサー率18% (32/173)
書きこむだけであれば、DoubleクラスやLongクラスのtoStringメソッドで、文字列の変換して書きこむってことも出来ますが、これでは桁数が解らなくなるのでセパレータを入れる等の細工が必要ですね。 あとは、RandomAccessFileクラスを使う方法もあります。 このクラスはwriteDoubleや、writeLongといった書き込みメソッドがあります。また、readDoubleや、readLongと言った読み出しメソッドもあります。
お礼
回答ありがとうございます。 ご紹介いただいたRandomAccessFileクラスは多分今まで使ったことがないと思うので、APIで少し見てみたいと思います。
- arata
- ベストアンサー率49% (139/279)
各クラスの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()を使って変換しています。
お礼
おかげさまで解決いたしました。回答ありがとうございました。
お礼
二回連続で回答していただきありがとうございます。 おかげさまで今回のプログラムは無事にコンパイルでき、ロジックエラーが少々あったものの、それを修正して無事に動くようになりました。 今回はありがとうございました。