我该怎么做才能让程序识别小写和大写的 A 并计算它们的总数?

What do I do to get the program to recognize a lower and uppercase A and count them in total?

我有这个程序,我需要它来计算数据文件中的小写和大写 A。我不确定在 charAt 或子字符串之间使用什么。它也都在一个 while 循环中,我意识到也许我需要使用 next() 方法?也许?我只需要找到这些字符并统计它们的总数即可。

import static java.lang.System.*;
import java.util.*;
import java.io.*;

public class Java2305{
    public static void main(String args[]){
        new Solution();
}}


class Solution
{
    private Scanner fileScan;

    Solution()
    {
        run();
    }

    void run()
    {
        int count = 0;

        try
        {
            fileScan = new Scanner(new File("letters01.dat"));

            while(fileScan.hasNext() )
            {
                String getA = fileScan.substring("A");
                out.println(getA);
                count++;
            }




        }
        catch(Exception e){}

        out.println();
        out.println("The letter 'A' occurs "+count+" times.");
        out.println();
        out.println();
    }
}

为什么要使用 Scanner?这意味着使用正则表达式扫描文本中的分隔标记,但您并没有真正使用它。

我建议你改用Reader,然后你可以调用它的read()方法来读取单个字符:

int count = 0;

try
{
    Reader fileReader = new FileReader("letters01.dat");
    /* or:
    Reader fileReader = new InputStreamReader(
        new FileInputStream("letters01.dat"),
        "the file's charset here"
    ); 
    */

    int value = fileReader.read();
    while (value != -1)
    {
        char ch = (char) value;
        if ((ch == 'a') || (ch == 'A'))
            count++;
        value = fileReader.read();
    }
}
catch(Exception e){}

您可以使用 BufferedReader 来更有效地读取文件:

Reader fileReader = new BufferedReader(new FileReader("letters01.dat"));
/* or:
Reader fileReader = new BufferedReader(
    new InputStreamReader(
        new FileInputStream("letters01.dat"),
        "the file's charset here"
    )
); 
*/

然后可选择逐行处理它而不是逐个字符(尽管您仍然可以这样做):

int count = 0;

try
{
    String line = fileReader.readLine();
    while (line != null)
    {
        for(int i = 0; i < line.length(); ++i)
        {
            char ch = line.charAt(i);
            if ((ch == 'a') || (ch == 'A'))
                count++;
        }
        line = fileReader.readLine();
    }
}
catch(Exception e){}