我制作了这个程序来计算文件中不包括空格的字符数。但是,当我在超过一行的输入上对其进行测试时,它开始出现错误。但是,我知道我添加到文件的每一行,错误都会增加+2。但是为什么会这样呢?
import java.lang.*;
import java.util.*;
import java.io.*;
public class fileread_1
{
public static void main (String args[]) throws IOException
{
try{
FileInputStream fs = new FileInputStream("checkerx.txt");
FileOutputStream f_out = new FileOutputStream("check_twice.txt",false);
PrintStream ps = new PrintStream(f_out);
int i=0,count =0;
while((i=fs.read())!=-(1)){
if(!(((char)i)==(' ')))
count = count +1;
ps.print((char)i);
}
System.out.println(count);
}
catch(FileNotFoundException e)
{
System.out.println("the file was not found");
}
}
}
答案 0 :(得分:0)
您正在计算行尾字符,在Linux / UNIX中,这是ASCII换行符,对于Windows / MSDOS,是换行和回车符。
请注意,文件中还可以包含其他空格字符,例如制表符,换页符等。应该如何计算这些空格?
答案 1 :(得分:0)
当您阅读char时,还将获得回车符(CR,\r
)和换行符(LF,\n
)。您应该考虑它的状况。
替换此:
if(!(((char)i)==(' ')))
与此:
char readChar = (char)i;
if(!(readChar==(' ') || readChar==('\r') || readChar==('\n')))