我的程序读取一个单词文件,我试图打印字母表中每个字母开头的单词的频率。但是我的频率不断出现为" 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);
答案 0 :(得分:3)
您的letter
子字符串错误。您正在从temp
的字符0到temp
的结尾处获得子字符串。您想要.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);
答案 1 :(得分:0)
temp.substring (0)
会返回整个temp
字符串,您应该将其替换为temp.charAt (0)
。