我刚开始使用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);
}

10-06 09:44