java - 将扫描仪中的单词处理为字符串数组
问题描述
我对编程相当陌生,并且正在尝试设计一种方法来创建具有多个参数的方法。一个扫描器,一个单词的字符串数组,一个匹配单词数组的字符串数组与该单词的使用次数,以及一个整数与字符串数组中有多少单词。我的目标是逐个处理扫描仪中的单词,如果扫描仪中的单词也在单词数组中我想将一个单词添加到 int 数组中,如果一个单词不是我想要添加到的单词数组数组上第一个空空间的单词数组,并在与单词相同的位置向 int 数组添加一个。该方法的目标是在扫描仪中处理完单词后返回单词数组中有多少单词。我的第一次尝试在 .equals() 上提取了一个 nullPointerException。我的方法
public static int scanScanner(Scanner s,String[] words, int[] wordCount, int wordsInWordsArray) {
for(int i = 0; i < words.length; i++) {
String currentToken = s.next();
if(words[i].equals(currentToken)) {
wordScore[i]=+lineScore;
wordCount[i]++;
}
else {
words[wordsInWordsArray] = currentToken;
wordScore[wordsInWordsArray]=+lineScore;
wordCount[wordsInWordsArray]++;
wordsInWordsArray++;
}
}
return wordsInWordsArray;
}
解决方案
几件事:
- 您的外部循环应该遍历扫描仪中的单词,而不是数组中的单词。正如你现在所拥有的,如果你碰巧从一个空数组开始,你的方法将什么也不做。
- 你有需要数组的理由吗?一般来说,您应该更喜欢
java.util
集合类而不是数组。他们将为您处理调整大小。在这种情况下,aMap<String, Stats>
似乎是要走的路,Stats
你创建的一个包含计数和分数的类在哪里。如果分数只是计数的函数,那么您只需要计数并且可以使用Map<String, Integer>
.
您在这里的方法似乎不必要地复杂。
推荐阅读
- java - 为什么 Java nio 会消耗过多的 CPU?
- regex - pyspark 将单个列转换为多个列
- icalendar - .ics 文件:用于全天活动的 VALARM 不起作用
- duplicates - SQL Teradata - 在列中标记重复记录
- julia - 测试一个字符是否是有效的 Julia 单字符变量名?
- javascript - 当点击任何地方场景时,会发生 VR 模式的 Aframe selectstart 事件;预计在具体的实体上触摸点击
- ios - 带有动作的 React Native [iOS] 通知 - 我无法确定选择了什么动作
- c++ - 我可以在一个头和一个接口的 cpp 文件中有多个实现吗?
- android - 使用 DEFAULT_SERIALIZE_NULLS 值时不会跳过 Retrofit2/Gson 空值
- android - Appium - 无法创建新的远程会话