我需要计算字符串中的单词数。对于你们中的许多人来说,这似乎很简单,但是根据我在类似问题中所读的内容,人们在说要使用数组,但我宁愿不这样做。由于我的字符串来自输入文件,并且程序无法硬连线到特定文件,因此它会使程序变得更加复杂,而不是帮助。
到目前为止,我有:
while(input.hasNext())
{
String sentences = input.nextLine();
int countWords;
char c = " ";
for (countWords = 0; countWords < sentences.length(); countWords++)
{
if (input.hasNext(c))
countWords++;
}
System.out.println(sentences);
System.out.println(countWords);
}
问题是我在这里所得到的最终是计算字符串中字符的数量。我以为它将char c作为分隔符。我也尝试过使用String c代替input.hasNext,但是编译器告诉我:
Program04.java:39: incompatible types
found : java.lang.String[]
required: java.lang.String
String token = sentences.split(delim);
此后,我从程序中删除了.split方法。如何在不将String数组与扫描文件一起使用的情况下定界(该单词正确吗?)?
请勿将扫描仪(input
)用于多于一件的事情。您正在使用它来读取文件中的行,并且还试图使用它来计数这些行中的单词。使用第二台扫描仪来处理生产线本身,或使用其他方法。
问题在于扫描程序在读取缓冲区时会消耗其缓冲区。input.nextLine()
返回sentences
,但之后不再包含它们。调用input.hasNext()
它为您提供有关字符的信息之后 sentences
。
计算字数的最简单方法sentences
是:
int wordCount = sentences.split(" ").length;
使用扫描仪,您可以执行以下操作:
Scanner scanner = new Scanner(sentences);
while(scanner.hasNext())
{
scanner.next();
wordCount++;
}
或使用for循环以获得最佳性能(如BlackPanther所述)。
我要给您的另一个提示是如何更好地命名变量。countWords
应该是wordCount
。“计数单词”是命令,是动词,而变量应是名词。sentences
应该简单地是line
,除非您既知道该行是由句子组成的,而且这个事实与其余代码有关。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句