Java 为从文件读取的数据提供错误计数

Java 为从文件读取的数据提供错误计数,java,filereader,filewriter,Java,Filereader,Filewriter,我尝试从文件中读取和写入一些数据,并使用split()方法从写入的数据中计算非常简单的特征,如空格数等。这是我试过的 File file=new File("G:\\AAA.txt"); FileWriter fw=new FileWriter(file); fw.write("AAAAAAAA"); fw.flush(); fw.close(); FileReader fr=new FileReader(file); Strin

我尝试从文件中读取和写入一些数据,并使用split()方法从写入的数据中计算非常简单的特征,如空格数等。这是我试过的

    File file=new File("G:\\AAA.txt");

    FileWriter fw=new FileWriter(file);

    fw.write("AAAAAAAA");

    fw.flush();
    fw.close();

    FileReader fr=new FileReader(file);

    String spaces="\\s";

    BufferedReader br=new BufferedReader(fr);

    String data=br.readLine();
    System.out.println(data);

    String[] tokenize=data.split(spaces);
    System.out.println(tokenize.length);
我的问题是,如果没有空格,我得到的答案是1,尽管它必须是0。当给我1个空间时,它打印为2。在给定的空间中,答案总是大于1

谁能解释一下没有得到确切答案的原因。

来自String.split的

如果表达式与输入的任何部分都不匹配,则结果数组只有一个元素,即该字符串

因此,如果没有空格,将返回原始字符串,因此长度为1


如果你有一个空格,比如说“AAAAAA”,数组将有两个元素“AAA”和“AAA”。因此,长度总是比令牌数大一个。

如果没有空格,为什么是一个

Pattern pattern = Pattern.compile("\\s");

Matcher matcher = pattern.matcher("AA   A");

int count = 0;
while (matcher.find())
    count++;
如果在
split(#regex)
中没有匹配的字符串,它将把输入字符串返回到字符串数组中

为什么总是有多个if空格

Pattern pattern = Pattern.compile("\\s");

Matcher matcher = pattern.matcher("AA   A");

int count = 0;
while (matcher.find())
    count++;
它将按空间分割字符串,所以上半部分和下半部分将在数组中。所以长度大于1

查找空间计数

Pattern pattern = Pattern.compile("\\s");

Matcher matcher = pattern.matcher("AA   A");

int count = 0;
while (matcher.find())
    count++;

你好,杰夫,谢谢你的回复。我明白你说的了。但是如果我的答案是“AAA”,中间有两个空格,怎么才能得到3呢?它计算空间的数量,对吗?那么,这是一种计算大型字符串特征的好方法吗?为了得到准确的答案,我是否总是需要从答案o.o.中减去1?
“AAA AAA”。拆分(\\s”)
将返回长度为3的数组。试试Apache的countMatches(java.lang.String),谢谢您回复Siva。计算字符串中的空格数是一种好方法吗?请你解释一下,带三个空格的“AA A”是如何给我4的答案的?要得到确切的空格数,我需要从我得到的答案中减去1吗?Pattern=Pattern.compile(\\s);Matcher Matcher=pattern.Matcher(“AA A”);整数计数=0;而(matcher.find())count++;你可以这样用