如何将数组的值作为另一个数组的索引?我试图计算输入的不同整数。当我运行代码时,我得到一个超出范围的索引消息。有什么想法吗?
import java.util.Scanner;
public class MatchineNums{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] arr = new int[4];
System.out.print("Enter 4 numbers: ");
for(int i = 0; i < arr.length; i++){
arr[i] = input.nextInt();
}
int[] count = new int[arr.length];
for(int i = count.length; i > -1; i--){
int value = arr[i];
count[value]++; //I think my problem is here but can't figure out why.
}
}
}
答案 0 :(得分:2)
你的索引超出界限异常,因为你已经超出界限。
您需要从count.length - 1
开始,而不是从count.length
开始。
for (int i = count.length - 1; i > -1; i--) {...}
如何将数组的值作为另一个数组的索引?
你不能制作索引。您可以创建一个足够大的数组,以获得所需的所有索引。只需保持输入的最大值,然后创建一个这样大小的数组。然后你有一个包含所有这些索引的数组。
处理此问题的更好方法是使用hashmap。键将是输入,值将是每个键的计数器。这种方式比数组更好,因为每个不同的输入都有一个映射条目,就是这样。使用数组,你最终会得到一个带有许多“漏洞”的非常稀疏的数组。