gpt4 book ai didi

java - 不使用 split 方法计算字符串中不在字符串数组中的单词数

转载 作者:行者123 更新时间:2023-12-02 06:29:28 26 4
gpt4 key购买 nike

我需要计算字符串中的单词数。对于你们中的许多人来说,这似乎很简单,但从我在类似问题中读到的内容来看,人们说要使用数组,但我宁愿不使用数组。它使我的程序变得更加复杂,而不是有帮助,因为我的字符串来自输入文件,并且程序无法硬连接到特定文件。

到目前为止我有这个:

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 方法。如何在不使用带有扫描文件的字符串数组的情况下分隔(这是正确的词吗?)?

最佳答案

请勿将扫描仪(输入)用于多种用途。您正在使用它从文件中读取行,并尝试使用它来计算这些行中的单词数。使用第二个扫描仪来处理线条本身,或使用不同的方法。

问题在于扫描仪在读取时会消耗其缓冲区。 input.nextLine() 返回句子,但之后就不再有它们了。对其调用 input.hasNext() 可以为您提供有关句子之后字符的信息。

计算句子中单词数的最简单方法是:

int wordCount = sentences.split(" ").length;

使用扫描仪,您可以:

Scanner scanner = new Scanner(sentences);
while(scanner.hasNext())
{
scanner.next();
wordCount++;
}

或者使用 for 循环以获得最佳性能(如 BlackPanther 提到的)。

我给你的另一个技巧是如何更好地命名你的变量。 countWords 应为 wordCount。 “数字”是命令,是动词,而变量则应该是名词。 sentences 应该只是 line,除非您知道两者该行是由句子组成的,并且这一事实与代码的其余部分相关.

关于java - 不使用 split 方法计算字符串中不在字符串数组中的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20210544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com