我正在txt文件中写一个字符出现计数器。当我运行时,我的计数结果为0:
public double charPercent(String letter) {
Scanner inputFile = new Scanner(theText);
int charInText = 0;
int count = 0;
// counts all of the user identified character
while(inputFile.hasNext()) {
if (inputFile.next() == letter) {
count += count;
}
}
return count;
}
任何人都知道我哪里出错了?
答案 0 :(得分:1)
这是因为Scanner.next()将返回整个单词而不是字符。这意味着字符串from很少与单个字母参数相同(除了单词是单个字母的情况,例如' I'或' A')。我也没有看到这条线的必要性:
int charInText = 0;
因为没有使用变量。
相反,你可以尝试这样的事情:
public double charPercent(String letter) {
Scanner inputFile = new Scanner(theText);
int totalCount = 0;
while(inputFile.hasNext()) {
//Difference of the word with and without the given letter
int occurencesInWord = inputFile.next().length() - inputFile.next().replace(letter, "").length();
totalCount += occurencesInWord;
}
return totalCount;
}
通过使用带有和不带字母的inputFile.next()的单词长度之间的差异,您将知道该单词在该特定单词中出现的次数。这将添加到总计数中,并对txt中的所有单词重复。
答案 1 :(得分:0)
使用inputFile.next().equals(letter)
代替inputFile.next() == letter1
。
因为==
检查引用。您应该检查String
对象的内容。因此,请使用equals()
String
正如评论中所述,将count += count
更改为count +=1
或count++
。
答案 2 :(得分:0)
您的意思是将下一个单词与您想要的字母进行比较吗?
inputFile.next()
将返回下一个String,由空格分隔(tab,enter,spacebar)。除非您的文件只包含以空格分隔的单数字母,否则您的代码将无法找到这些字母中所有出现的字母。
您可能想尝试调用inputFile.next()
来获取下一个String,然后将该String断开为charArray。从那里,你可以遍历charArray(想想循环)来找到所需的字符。作为提到的评论者,您不希望使用==
来比较两个字符串,但您可以使用它来比较两个字符。如果您的String的charArray中的字符与您想要的字符匹配,请尝试count++
将您的计数器增加1。