2010-12-03 8 views
0

誰かがこの問題を解決してくれますか?私はバイナリI/Oクラスではあまりよくありません。バイナリI/Oクラス(バイナリデータファイルのすべての整数を集計)

Exercise 13b_1.datという名前のバイナリデータファイルが、DataOutputStreamでwriteInt(int)を使用して作成されているとします。このファイルには、不特定多数の整数が含まれています。整数の和を求めるプログラムを書く。

+0

プログラミングは主にバイナリで行われていますが、あなたはいつも世界にいます。だから、何かを試して、あなたに不明な細部について質問してください。 – ruslik

+0

ヒント:「writeInt」と呼ばれるメソッドで記述されたものを読み取るのに、どのような方法が使用されると思いますか? –

答えて

0

ここには簡単な解決策があります。

FileInputStream fis = new FileInputStream("13b_1.dat"); 
DataInputStream dis = new DataInputStream(fis); 
int count = 0; 

try { 
    while (true) { 
     dis.readInt(); 
     count++; 
    } 

} catch (EOFException e) {} 

System.out.println("There are " + count + " integers."); 

効率的に、1つの整数が4バイトであるため、一連のバイトを読み込み、バイト数を4で割ることができます。

+0

もちろん、コントロールフローの例外を使うことはあまり良いスタイルではありません。もしそのファイルにいくつのintがあるのか​​を知る方法があれば。 – Dmitri

+0

@Dmitri:writeIntがすべての引数に一定のバイト数を書き込む場合、ファイル長をその数値で除算して、ファイル内の整数の数を取得できます。 – Thomas

+0

@トーマス:私は穏やかな皮肉を使って、問題の著者を解決策への道に導いていました:) – Dmitri

関連する問題