【问题标题】:Using an array to input strings, and another one to output word frequency使用一个数组输入字符串,另一个输出词频
【发布时间】:2021-12-13 05:56:20
【问题描述】:

所以我正在尝试完成这段代码。目标是输入一个字符串数组,然后计算找到单词的频率。例如:

输入:

joe 
jim 
jack
jim
joe

输出:

joe 2
jim 2
jack 1
jim 2
joe 2

必须为字符串选择一个数组,而为词频选择另一个数组。

到目前为止我的代码:

我一直在尝试实现这一点。设置了字符串方法,但是我将如何计算单词的频率,并将这些值分配给数组。然后并排打印。我知道一旦设置了整数数组。我们可以简单地执行一个 for 循环来将这些值一起打印,例如。 System.out.println(String[i] + " " + countarray[i]);

public class LabClass {

    public static int getFrequencyOfWord(String[] wordsList, int listSize, String currWord) {
        int freq = 0;

        for (int i = 0; i < listSize; i++) {
            if (wordsList[i].compareTo(currWord) == 0) {
                freq++;
            }
        }

        return freq;
    }

    public static void main(String[] args) {
        LabClass scall = new LabClass();
        Scanner scnr = new Scanner(System.in);

        // assignments 
        int listSize = 0;
        System.out.println("Enter list Amount");

        listSize = scnr.nextInt();
        // removing line to allow input of integer
        int size = listSize;   // array length

        // end of assignments
        String[] wordsList = new String[size];  // string array

        for (int i = 0; i < wordsList.length; i++) {  //gathers string input
            wordsList[i] = scnr.nextLine();
        }

        for (int i = 0; i < listSize; i++) {
            String currWord = wordsList[i];
            int freqCount = getFrequencyOfWord(wordsList, listSize, currWord);
            System.out.println(currWord + " " + freqCount);
        }
    }

}    

【问题讨论】:

  • 这将使用字符串。
  • 同样的想法。而不是== 使用.equals()
  • 我很困惑,我去了这个线程,但问题中没有标记答案。字符串已存储。我需要能够将频率存储到另一个数组中。那没有t 回答我的问题。我需要创建另一个数组,但我希望能够检查字符串数组并使用字符串重复的频率更新每个数组条目。

标签: java arrays string


【解决方案1】:
int some_method(String[] arr, String word) {
    int count = 0;
    for (int i=0; i<arr.size(); i++) {
        if (arr[i].equals(word)) count++;
    }
    return count;
}

然后在main方法中:

String[] array = ["joe", "jake", "jim", "joe"] //or take from user input

int[] countArray = new int[array.size()]

for (int i=0; i<array.size(); i++) {
    countArray[i] = some_method(array, array[i])    
}

System.out.println(array[0] + " " + countArray[0]);

输出: 乔2

【讨论】:

  • 我快到了,唯一的问题是它告诉我找不到行。
  • 我更新了代码。
  • @Jake 你能在问题中添加完整的错误吗?
猜你喜欢
  • 2019-12-31
  • 2016-04-30
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多