Java 如何使用扫描仪或缓冲读取器读取输入文件,并统计输入文件中出现的所有特定字符

Java 如何使用扫描仪或缓冲读取器读取输入文件,并统计输入文件中出现的所有特定字符,java,Java,如何使用扫描仪或bufferedreader读取文件并计算文件中的所有字母“B” 现在,我用扫描器读取文件,每次遇到“B”时,我都要计算一个int,为了检查字符串中的下一个字符,也要计算一个int,但它只适用于第一行,因为当j达到13时,我会得到一个越界异常(输入文件每行有13个字符,然后是换行符) 我尝试过在空格上拆分,但它告诉我每次都有零个“B”,这不是真的; static int count; while(input.hasNext()) { String line=input.next(

如何使用扫描仪或bufferedreader读取文件并计算文件中的所有字母“B”

现在,我用扫描器读取文件,每次遇到“B”时,我都要计算一个int,为了检查字符串中的下一个字符,也要计算一个int,但它只适用于第一行,因为当j达到13时,我会得到一个越界异常(输入文件每行有13个字符,然后是换行符)

我尝试过在空格上拆分,但它告诉我每次都有零个“B”,这不是真的;
static int count;
while(input.hasNext())
{
String line=input.next();
getCount(line);
}

private static int getCount(String line)
{
char[] arr=line.toCharArray();
for(int i=0;i<arr.length;i++)
{
if(arr[i]=='B')
count ++;
}
}
while(input.hasNext()) { String line=input.next(); getCount(行); } 私有静态int getCount(字符串行) { char[]arr=line.toCharArray(); 对于(int i=0;i我认为这就是您要寻找的,您可以这样使用它:

int occurences=0;
while(input.hasNext())
{
   String line=input.next();
   occurences+=StringUtils.countMatches(line, "B");
}
System.out.println("There are "+occurences+" occurences of the character B in the file.");

解决此问题的更简单方法是设置扫描仪的分隔符:

input.useDelimiter("");
然后,每当下一个令牌等于“B”时,递增计数器:

while (input.hasNext()) {
    if (input.next().equals("B"))
        b++;
}
while (input.hasNext()) {
    if (input.next().equals("B"))
        b++;
}