我想做的是使用一种方法生成 0-15 之间的 30 个随机数,然后使用另一种方法计算每个数字打印的次数并将其放入第二个数组中。第二个数组中的每个位置都对应于数组中的数字。如果 i = [0] 并且 0 出现了 3 次,它应该是 3 等等。
到目前为止,我已经明白了。似乎正在发生的是它计算 15 出现的次数(数组的最后一个数字)。虽然我可能是错的。我不明白我做错了什么。我的逻辑一定有问题。
import java.util.Arrays;
public class FrequencyOfNumbers {
public static void main(String[]args){
System.out.println(Arrays.toString(randomNums()));
System.out.println(Arrays.toString(sortedNums(randomNums())));
}
public static int[] randomNums (){
int[] random = new int[30];
for(int i=0;i<random.length;i++){
double randNum = Math.random() * 16;
random[i] = (int)randNum;
}
return random;
}
public static int[] sortedNums(int[] sort){
int[] numVals = new int[15];
for(int i=0;i<numVals.length;i++)
{
for(int j=0;j<sort.length;j++)
{
if(sort[j] == numVals[i])
{
numVals[i]++;
}
}
}
return numVals;
}
}
我收到的示例输出:
[5, 15, 0, 5, 4, 10, 4, 11, 5, 13, 13, 8, 9, 9, 10, 6, 0, 9, 10, 12, 3, 7, 4, 9, 4, 11, 9, 15, 10, 7]
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]
最佳答案
要计算集合中某个对象的实例数,您可以使用 Collections.frequency()
:
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < sort.length; i++) {
list.add(sort[i]);
}
for(int i = 0; i< numVals.length;i++){
numVals[i] = Collections.frequency(list, i);
}
return numVals;
关于java - 使用 int[] 数组通过嵌套循环相互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40441794/