这是我的一种方法,它扫描TXT文件并计算单词" Jan"的出现次数。应该是1,因为txt文件中的日期是09年1月9日
static int getFirstMonth() throws FileNotFoundException {
File file_to_scan = new File("happyFile.txt");
Scanner scannerInput = new Scanner(file_to_scan);
int count = 0;
while (scannerInput.hasNext()) {
String nextWord = scannerInput.next();
if (nextWord.equalsIgnoreCase("Jan")) {
count++;
}
}
return count;
}
Here是txt文件,任何人都想看看。
如果我正在使用nextWord.equals("Jan")
,我会明白为什么它没有提升,因为它不是完整的词,但不应该ignoreCase
忽略它并选择连续3个字母?谁能帮助我解决这个问题。
答案 0 :(得分:2)
String.equals()
将比较整个单词。在这种情况下,Scanner.next()
是用空格分隔单词,所以它在阅读" 09-Jan-2018"进入nextWord
。
如果您想查看nextWord
是否包含" Jan",请考虑使用类似String.contains()
的内容,并且对于不区分大小写,您可以在比较之前将每个字符串转换为小写。
例如:if (nextWord.toLowerCase().contains("jan"))