获取数组的值,并使它们成为Java中另一个数组的索引

时间:2018-03-10 02:57:01

标签: java arrays

如何将数组的值作为另一个数组的索引?我试图计算输入的不同整数。当我运行代码时,我得到一个超出范围的索引消息。有什么想法吗?

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.  

      }
   }
}

1 个答案:

答案 0 :(得分:2)

你的索引超出界限异常,因为你已经超出界限。

您需要从count.length - 1开始,而不是从count.length开始。

for (int i = count.length - 1; i > -1; i--) {...}
  

如何将数组的值作为另一个数组的索引?

你不能制作索引。您可以创建一个足够大的数组,以获得所需的所有索引。只需保持输入的最大值,然后创建一个这样大小的数组。然后你有一个包含所有这些索引的数组。

处理此问题的更好方法是使用hashmap。键将是输入,值将是每个键的计数器。这种方式比数组更好,因为每个不同的输入都有一个映射条目,就是这样。使用数组,你最终会得到一个带有许多“漏洞”的非常稀疏的数组。