在这里,我必须将一个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},该数组将从主方法中显示。
答案 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>();