我正在尝试创建一个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 );
}
有人可以解释一下,这段代码没有创建输出文本文件吗?
答案 0 :(得分:0)
代码抛出异常,你不是在看命令行输出。
您需要将阅读更改为:
int i = pollNumbers.read();
while (i != -1) {
++frequency[i];
i = pollNumbers.read();
}
frequency
可能不够大。如果文件中只显示数字0-5,请将读取更改为:(您还需要忽略此范围内的任何内容,因为还有换行符等)
++frequency[i-'0'];
这需要完成,因为根据this,'0'的整数值为十六进制30 = 48,并且您希望它的整数值为0。
卸下:
catch( EOFException eof ) { }
它似乎没有做任何事情。
将您的上一个catch
更改为:
catch( IOException io ) {
io.printStackTrace();
System.exit( 1 );
}
否则你只是忽略错误。