0

output.txt ファイルを作成しようとしています。コードはエラーなしでコンパイルされていますが、o/p ファイルは作成されていません。何か助けてください。

 import java.io.*;

public class StudentPoll_dasariHaritha {

public static void main( String args[] )
 {
int frequency[] = new int[ 6 ];

  try {
 BufferedInputStream pollNumbers =
 new BufferedInputStream( new FileInputStream( "numbers.txt" ) );

try {
 // for each answer, use that value as subscript to
 // determine element to increment
while( true ) {
        ++frequency[ pollNumbers.read() ];
     }
 }

 catch( EOFException eof ) {
  }

 String output = "Rating\tFrequency\r\n";

 // append frequencies to String output
 for ( int rating = 1; rating < frequency.length; rating++ ) {
        output += rating + "\t" + frequency[ rating ] + "\r\n";
     }



 BufferedWriter writer =
 new BufferedWriter( new FileWriter( "output.txt" ) );
 writer.write( output );
 writer.close();



 pollNumbers.close();

 System.exit( 0 );

 }

 catch( IOException io ) {

   System.exit( 1 );
   }   

このコードが出力テキストファイルを作成していないことを誰かが説明できますか?

4

1 に答える 1

0

コードが例外をスローしています。コマンド ライン出力を確認していません。

  1. 読み取りを次のように変更する必要があります。

    int i = pollNumbers.read();
    while (i != -1) {
        ++frequency[i];
        i = pollNumbers.read();
    }
    
  2. frequencyおそらく十分な大きさではありません。ファイルに数字 0 ~ 5 しか表示されない場合は、read を次のように変更します (改行文字なども含まれるため、この範囲外のものは無視する必要もあります)。

    ++frequency[i-'0'];
    

    thisによると、「0」には 16 進数 30 = 48 の整数値があり、代わりに整数値 0 を使用する必要があるため、これを行う必要があります。

  3. 削除する:

    catch( EOFException eof ) { }
    

    何もしないようです。

  4. 最後catchを次のように変更します。

    catch( IOException io ) {
      io.printStackTrace();
      System.exit( 1 );
    }
    

    そうしないと、エラーを無視するだけです。

于 2013-02-21T08:31:19.670 に答える