我刚刚开始使用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;
}
}
}
}
答案 0 :(得分:3)
如果您的代码仅用于计算单词,那么您根本不需要遍历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);
}
答案 1 :(得分:1)
首先,你不需要进行循环,因为&#34;长度&#34;属性已经拥有它。但是,如果你想用循环练习就像每次迭代器前进时增加计数器一样容易。
numWords++;
答案 2 :(得分:0)
提示:阅读输入
String sentence = stdin.nextLine();
拆分字符串
String [] words = sentence.split(" ");
句子中的单词数
System.out.println("number of words in a sentence are " + words.length);
您在评论中提到,您还要按字母顺序打印该行。因为Java让你满意:
Arrays.sort(words);
答案 3 :(得分:0)
计算字符串String phrase
中单词数量的最佳方法是使用String方法 split String[] words = phrase.split(" ")
从中获取String数组并将其作为参数空间本身,这将返回一个包含每个不同单词的String数组,然后您可以简单地检查其长度words.length
,这将为您提供确切的数字。