0

我的程序读取一个单词文件,我试图打印以字母表的每个字母开头的单词的频率。但我的频率一直显示为“0”。谁能帮我?这是我的程序:

    while (in.hasNext())
    {
        words.add(in.next());
    }
    in.close();
    aFileReader.close();

    for(int i = 0; i < chars.length - 1; i++)
    {
        int counter = 0;
        for(int j = 0; j < words.size(); j++)
        {
            String temp = words.get(j);
            String letter = temp.substring(0);
            if(letter.equalsIgnoreCase(chars[i]))
                counter++;
        }
        results += chars[i] + " = " + counter + "\n";
    }
    JOptionPane.showMessageDialog(null,results);
4

2 回答 2

3

你的letter子字符串是错误的。你得到一个从字符 0temptemp. 你想要.substring(0, 1),或者更好的是,.charAt(0)

您可以利用 Java 的char类型实际上是数字这一事实,而不是使用一组字符进行比较。

while (in.hasNext()) {
    words.add(in.next().toLowerCase());
}
in.close();
aFileReader.close();

int[] counter = new int[24];

for(int i = 0; i < words.size(); i++) {
    String temp = words.get(i);
    int letterIndex = temp.charAt(0) - 'a'
    if(letterIndex >= 0 && letterIndex < counter.length)
        counter[letterIndex]++;
}
for (int i = 0; i < counter.length; i++) {
    results += ((char)('a' + i)) + " = " + counter[i] + "\n";
}
JOptionPane.showMessageDialog(null,results);
于 2014-04-02T19:59:57.450 回答
0

temp.substring (0)返回整个temp字符串,您应该将其替换为temp.charAt (0).

于 2014-04-02T20:01:58.520 回答