【发布时间】:2014-02-17 18:31:13
【问题描述】:
我正在尝试用 Java 编写一个程序,该程序采用三个数组并返回删除了最小值的数组。我想我创建新数组是错误的。虽然它似乎编译得很好,但每次我运行它时,我都会收到以下消息:
线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:5
任何帮助将不胜感激!
这是我的代码:
import java.util.Arrays;
class LowestGrade
{
public static void main (String [] args)
{
int [] a = removeLowest (23, 90, 47, 55, 88);
int [] b = removeLowest (85, 93, 42);
int [] c = removeLowest (59, 92, 93, 47, 88, 47);
System.out.println ("a = " + Arrays.toString(a));
System.out.println ("b = " + Arrays.toString(b));
System.out.println ("c = " + Arrays.toString(c));
}
public static int[] removeLowest (int...grades)
{
if (grades.length <= 1)
{
return grades;
}
else
{
int [] newArray = new int [grades.length - 1];
int lowest = grades [0];
for (int i = 0; i < grades.length; i++)
{
for (int n = 0; n <= grades.length; n++)
{
if (grades[n] > lowest)
{
newArray[i] = grades[n];
i++;
}
else
{
lowest = grades[n];
}
}
}
return newArray;
}
}
}
【问题讨论】:
-
你认为这个错误意味着什么?没有比这更明显的错误发生原因了。
-
bug 在这里
if (grades[n] > lowest)你的 n 大于grades的大小。 -
另外你为什么要使用嵌套循环?您可以在一个简单的循环中执行此操作(如果您不关心结果数组的顺序)。
-
你了解调试的概念吗??
标签: java arrays indexoutofboundsexception