首页 > 解决方案 > 将扫描仪中的单词处理为字符串数组

问题描述

我对编程相当陌生,并且正在尝试设计一种方法来创建具有多个参数的方法。一个扫描器,一个单词的字符串数组,一个匹配单词数组的字符串数组与该单词的使用次数,以及一个整数与字符串数组中有多少单词。我的目标是逐个处理扫描仪中的单词,如果扫描仪中的单词也在单词数组中我想将一个单词添加到 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;
    }

标签: javaarraysjunitjava.util.scanner

解决方案


几件事:

  1. 您的外部循环应该遍历扫描仪中的单词,而不是数组中的单词。正如你现在所拥有的,如果你碰巧从一个空数组开始,你的方法将什么也不做。
  2. 你有需要数组的理由吗?一般来说,您应该更喜欢java.util集合类而不是数组。他们将为您处理调整大小。在这种情况下,aMap<String, Stats>似乎是要走的路,Stats你创建的一个包含计数和分数的类在哪里。如果分数只是计数的函数,那么您只需要计数并且可以使用Map<String, Integer>.

您在这里的方法似乎不必要地复杂。


推荐阅读