平行数组的ArrayIndexOutOfBoundsException错误



对于我的赋值,我必须打印出以下数组的内容。每次我尝试运行该程序时,它都会通过第一部分,只显示Mercury的信息。然后我得到一个错误CCD_ 1。我知道这个错误通常意味着我试图调用array中不存在的索引,但我不知道如何修复它

public static void printResults(String[] name, double[] radius, double[] mass, double calcGravity[])
{
    for (int i = 0; i < radius.length; i++)
    {
        System.out.printf("%7s %12.1f %12.1e % 12.1f", name[i], radius[i], mass[i], calcGravity[i]);
    }
}

首先,ArrayIndexOutOfBoundException用于通过非法索引访问数组(基本上是指索引>=array.size或索引<0)。我不打算写任何代码,因为这是一项需要学习的任务,但要注意每个数组的大小,并确保它们的大小相等。

这应该很容易弄清楚。

查看传递给方法的每个数组。其中至少有一个成员只有一个。

然后确定调用者没有传递方法所期望的并行数组的原因。

检查数组的一种方法是在调试器中。您可以在方法中的第一条语句上设置断点。

有时,临时调试打印更方便或更必要。例如:

public static void printResults( String[] name, double[] radius, 
  double[] mass, double calcGravity[])
{
    System.out.println( "name.length = " + name.length );
    System.out.println( "radius.length = " + radius.length );
    ...

最新更新