构造动态大小的数组并返回Java中的主函数

时间:2019-02-20 16:37:06

标签: java sparse-matrix

在这里,我必须将一个int数组返回给main方法,该方法基于字符串数组中查询数组中字符串出现的次数。

static int[] matchingStrings(String[] strings, String[] queries) {
        String temp = "" ;
        int count = 0;int k=0;
        ArrayList result = new ArrayList();
    for(int i=0;i<queries.length;i++){
        temp = queries[i];
        for(int j=0;j<strings.length;j++){
            if(strings[j].equals(temp)){
                count++;
           } 
        }
        result.add(count);
        count = 0;
    }

   int[] back = new int[result.size()];
   back = result.toArray();
   return back;
 }

但是在执行“ Object []无法转换为int []”时显示错误。如何将arraylist更改为上面的数组,以便将数组返回到主方法。

以下是示例输入: Array1:字符串= {“ aba”,“ baba”,“ aba”,“ xzxb”}

Array2:query = {“ aba”,“ xzxb”,“ ab”}

因此该程序应该在array2中获取字符串,即一一查询,并检查array2中该字符串是否存在(即查询)。

样本输入的输出应为数组,即{2,1,0},该数组将从主方法中显示。

2 个答案:

答案 0 :(得分:1)

根据您的示例,您实际上并不需要ArrayList result = new ArrayList();,而需要与int[]相同大小的queries数组,该数组将在字符串数组中存储相应查询元素的出现次数。

因此您的代码看起来更像

int[] counters = new int[queries.size()];

//to iterate over queries,
for (int i=0; i<counters.length; i++){ //we need index so no for-each version this time

    //check how many times current element of query appears in strings
    for(String element : strings){     //for-each since we don't really care about position of element
        //if elements are equal increment counter for that element 
        if(queries[i].equals(element)){
            counters[i]++;
        }
    }
}
return counters;

答案 1 :(得分:0)

而不是一般的ArrayList,而是将其设为Int ArrayList。

ArrayList<Integer> result = new ArrayList<Integer>();