我刚开始使用Java,因此感谢您的耐心配合。无论如何,我正在编写一个字数统计程序,正如您可以按标题说明的那样,我被困在for循环下面的numWords
函数中,我不确定应该将其设置为什么。如果有人可以让我朝正确的方向前进,那就太好了。谢谢。这是到目前为止的所有代码,如果我对所要询问的内容不够具体,请告诉我,这是我的第一篇文章。再次感谢。
import java.util.Scanner;
public class WCount {
public static void main (String[] args) {
Scanner stdin = new Scanner(System.in);
String [] wordArray = new String [10000];
int [] wordCount = new int [10000];
int numWords = 0;
while(stdin.hasNextLine()){
String s = stdin.nextLine();
String [] words = s.replaceAll("[^a-zA-Z ]", "").toLowerCase().split("\\s\
+");
for(int i = 0; i < words.length; i++){
numWords = 0;
}
}
}
}
最佳答案
如果您的代码仅用于计算单词,则根本不需要遍历words
数组。换句话说,将您的for
循环替换为:
numWords += words.length;
最可能的一种更简单的方法是查找字母字符序列:
Matcher wordMatch = Pattern.compile("\\w+").matcher();
while (wordMatch.find())
numWords++;
如果您需要对单词进行某些操作(例如将它们存储在映射到计数中),则此方法将使操作变得更简单:
Map<String,Integer> wordCount = new HashMap<>();
Matcher wordMatch = Pattern.compile("\\w+").matcher();
while (wordMatch.find()) {
String word = wordMatch.group();
int count = wordCount.getOrDefault(word, 0);
wordCount.put(word, count + 1);
}