未创建输出文件

时间:2013-02-21 06:43:27

标签: java

我正在尝试创建一个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 );
   }   

有人可以解释一下,这段代码没有创建输出文本文件吗?

1 个答案:

答案 0 :(得分: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 );
    }
    

    否则你只是忽略错误。