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,请将您的读取更改为:(您还需要忽略不在此范围内的任何内容,因为还有换行符等)

    ++frequency[i-'0'];
    

    之所以需要这样做,是因为根据this,“0”的整数值是十六进制 30 = 48,而您希望它的整数值是 0。

  3. 消除:

    catch( EOFException eof ) { }
    

    它似乎没有做任何事情。

  4. 将您的最后一个更改catch为:

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

    否则你只是忽略错误。

于 2013-02-21T08:31:19.670 回答