以下のように、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 回答 (3件)

予約されてるらしいので、もう一度お邪魔します :-)



ぱっと思い付くのは二つ。ネイティブな型を使うのであれば、こんな感じで。

double dNumber = 3.45;
bw.write("" + dNumber);

クラスを使うんであれば、toString() メソッドを使う。

Double dNumber = new Double(3.45);
bw.write(dNumber.toString());

  *  *  *

ファイル名が .txt だから、テキストでの出力で良いのだと思うけど、
蛇足を少々。

・このままのソースだと、数字がくっついちゃう
・BufferedWriter の close() をするように
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/26 11:02

書きこむだけであれば、DoubleクラスやLongクラスのtoStringメソッドで、文字列の変換して書きこむってことも出来ますが、これでは桁数が解らなくなるのでセパレータを入れる等の細工が必要ですね。



あとは、RandomAccessFileクラスを使う方法もあります。
このクラスはwriteDoubleや、writeLongといった書き込みメソッドがあります。また、readDoubleや、readLongと言った読み出しメソッドもあります。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/26 11:05

各クラスの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()を使って変換しています。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/07/26 10:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDVD-RAMデイスクの「書き込み禁止」を解除する方法?

 現在DVD-RAMデイスクにデーターを保存して居りますが、 最近、「書き込み禁止」のエラーが出ます。
 この「書き込み禁止」を解除して書き込みが出来るように
 する方法を教えて下さい。
 使用OS:VISTA HP SP-1
 使用デイスク:DVD-RAM 4,7GB「TRANS DISC」

Aベストアンサー

最初にDVDをセットする前にマイコンピュータのCDドライブを右クリックしてプロパティーの「書き込み」の「このドライブでCD書き込みを有効にする」のチェックを外してください。
これをやらないとCDの書き込みウィザードが立ち上がってしまいDVDに書き込めません。

DVD-RAMディスクにはPCデータ用とビデオ録画用の2種類があります。

DVD-RAMのPCデータ用(for data)は買ってすぐそのままの状態ではデータ書き込みは出来ません。
ユニバーサルディスク1.5でのフォーマットが必要です。
フォーマットはされましたか?

DVDレコーダー用のフォーマットでは書き込めないらしいから、お持ちのRAMディスクが
for videoとパッケージに記載されていたらユニバーサルディスク1.5で再度フォーマットすれば書き込めるはずです。

マルチドライブ搭載ならばDVD-RAMドライバーが「すべてのプログラム」に入っています。
そこからフォーマットできます。

ドライブとディスクの相性がありメーカーが動作確認を取ったディスク以外は使えないことがあります。

ご自分のPCのメーカーに問い合わせると教えてくれるし、東芝のようにカタログに推奨ディスクを記載しているところもあります。

最初にDVDをセットする前にマイコンピュータのCDドライブを右クリックしてプロパティーの「書き込み」の「このドライブでCD書き込みを有効にする」のチェックを外してください。
これをやらないとCDの書き込みウィザードが立ち上がってしまいDVDに書き込めません。

DVD-RAMディスクにはPCデータ用とビデオ録画用の2種類があります。

DVD-RAMのPCデータ用(for data)は買ってすぐそのままの状態ではデータ書き込みは出来ません。
ユニバーサルディスク1.5でのフォーマットが必要です。
フォーマットは...続きを読む

QBufferedWriter(OutPutStream).write(String)で追記がしたい

環境
windowsXP+tomcat4.0.1

Servlet内でExceptionをcatchし、ファイルに書き出したいのですが、追記が出来ません。上書きされてしまって困っています。

コード:
FileOutputStream fos = new FileOutputStream(String);
OutputStreamWriter osw = new OutputStreamWriter(fos,"M932");
BufferedWriter bw = new BufferdWriter(osw);
bw.write(String);

最後のwrite()を追記型で起動したいのですが、参考書にBufferedWriterクラスに関することがほとんど載っていないため、どうしたらいいのやら。
ご存知の方がいましたら、ご回答お願いいたします。

Aベストアンサー

new FileOutputStream(String, true)で追記されます。

Javaのプログラムを組むときはAPIリファレンスは必須です。HTML形式のものがsunのサイトからダウンロードできますので不明な点があったらまずAPIリファレンスを見ましょう。

Q2ch最新書き込みへのたどり着き方法

2chの最新書き込みを見たいのですが方法がわかりません

さっき見たけれど、先月の日付で終わっていました

それが最新スレッドの書き込みでしょうか?

Aベストアンサー

過疎スレなんかの場合だと、1ヶ月以上書き込みがないスレもありますよ。
とりあえず。「全部」か「最新50」を押してみて下さい。

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

QCD-Rの書き込み方法

音楽CDをウィンドウズメディアプレーヤーで取り込み、CD-Rに書き込み後、
CDラジカセで再生できませんでした。

ウィンドウズメディアプレーヤーではCD-DAできないらしいので、
他の方法でCD-DAで書き込みできる方法を教えて下さい。

Aベストアンサー

>ウィンドウズメディアプレーヤーではCD-DAできないらしいので、

7のWMPでCD-DAは可能です。但し、デフォルトではデータの書込になっていますが、それをオーディオCDの書込にしないといけません。
やり方は簡単ですが画面で説明するのが苦しいので、ヘルプファイルを御覧ください。それで調べましたから。
WMPでCDまたはDVDに書き込む→オーディオCDへの書込です。

また、フリーソフトでもCD-DA書込可能のものが多いです。例えば、CDBurnerXPがCD-DAでの書込可能。StarBurnですと、CDからパソコンに直接取り込み可能でCD-DAでの書込可能。

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

QUSBめもりーの書き込み禁止の解除の方法を教えてください

よろしくお願いします。

しばらく使っていなかったUSBメモリーにデスクトップのファイルをコピーしようとしたら、書き込み禁止になっています。という文字が出て、コピーができませんでした。

USBメモリーの空き容量はあります。
USBメモリーの書き込み禁止の解除の方法を教えてください。






USBメモリーの書き込み禁止の解除の方法を教えてください

Aベストアンサー

> ELECOm FLASH MEMORY MF-AU202GRS です。
確かに見当たりませんね
なんかソフトで権限つけたりする方式を取っているようです
http://www2.elecom.co.jp/data-media/usb-flash/mf-au2/rs/

Q&Aにこんなのもありました
http://faq.elecom.co.jp/faq2/userqa.do?user=elecom&faq=FlashMemory&id=2599&parent=242

フォーマットするのが早いかもしれません

QInteger.parseInt()について public static void main(String[] args) { int a =

初歩的な質問だと思うのですが、、、

public class TestTree {

public static void main(String[] args) {

int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

GreatTree myTree = new GreatTree(a, b);
myTree.makeTree();
myTree.makeGround();
}

}

というプログラムについて、Integer.parseInt()はどういう意味を持つのかがわかりません。ただ適当につけた名前だとは思えないです。教えてもらえたら幸いです。お願いします。

Aベストアンサー

> argsで入力されたものは例え数字でも文字列として扱われているから、それをintにしている。ということですよね?

引数として (String[] args) と設定されていますので、
おっしゃるとおり 引数 args[]配列に入っているものは、文字列です。

ポイントは、 「String[]」でしょうか。。

QCDドライブでDVDーRへの書き込み方法

最近DVDの書き込みドライブがなくても読み込みドライブさへあればDVD-Rへ書き込みをする方法があると耳にしたのですが本当なのでしょうか?
また、やり方も教えて下さい。orz

Aベストアンサー

筐体を分解して、レーザーの出力を上昇させて、
OSやソフトに誤認識させるだけの技術をもっていれば
もしかしたら可能かもしれません。

ですが、それだけの勉強する時間と費用とリスクを考えると
安い書込ドライブを購入する方が安全です。

結論。
「現実問題として不可能」

QjspでString型からlong型への変換

プログラミング初心者です。
jspでString型の変数strに"1050652281474"という文字を入れて、それをlongに変換(キャストっていうのかな?)したいのですが、どうすればいいのか分かりません。どなたか分かる方がいましたら教えて下さい。
お願いします。

Aベストアンサー

String str = "1050652281474";
long value = Long.parseLong(str);

で良いかと・・・
この値がLong範囲内かどうかは気にしていませんが。。

あとはNumberFormatExceptionに気をつけてください。

APIのjava.lang.Longに詳細が書いてありますので
参考にしてください。


人気Q&Aランキング