Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冲突字符计数_Java - Fatal编程技术网

Java 冲突字符计数

Java 冲突字符计数,java,Java,我正在尝试查找给定文本文件中的字符数 我尝试使用扫描器和BufferedReader,但结果不一致。在附加新行字符后,使用扫描仪连接每行。例如,像这样: FileReader reader = new FileReader("sampleFile.txt"); Scanner lineScanner = new Scanner(reader); String totalLines = ""; while (lineScanner.hasNextLine()){

我正在尝试查找给定文本文件中的字符数

我尝试使用扫描器和BufferedReader,但结果不一致。在附加新行字符后,使用扫描仪连接每行。例如,像这样:

    FileReader reader = new FileReader("sampleFile.txt");
    Scanner lineScanner = new Scanner(reader);
    String totalLines = "";

    while (lineScanner.hasNextLine()){
        String line = lineScanner.nextLine()+'\n';
        totalLines += line;
    }
    System.out.println("Count "+totalLines.length());
这将返回我的文件的真实字符数,即5799

鉴于当我使用:

 BufferedReader reader = new BufferedReader(new FileReader("sample.txt"));

 int i;
 int count = 0;
 while ((i = in.read()) != -1) {
    count++;
 }

 System.out.println("Count "+count);
我得到5892

我知道如果只有一行,使用lineScanner将被关闭一次,但是对于我的文本文件,我得到了正确的输出


同样在notepad++中,以字节为单位的文件长度为5892,但不带空格的字符数为5706

文件中的行可能以
\r\n
而不是
\n
结尾。这可能会导致你的差异。

你必须考虑文本文件中的换行/回车字符。这也算作一个角色


我建议使用BufferedReader,因为它将返回更准确的结果。

那么您的问题到底是什么?@PTBG我的问题是,为什么使用扫描仪或缓冲阅读器会得到不同的答案?好的,我刚刚检查过,差异是由于扫描仪未计数“\r”。如果我在linux上运行这段代码,我会得到不同的输出吗?是的,但我被告知文本文件包含5799个字符,除非我的老师计算错误。