当我编译这个程序时它没有错误,但当我运行它时,我得到 Out of Bounds Error 。任何帮助?谢谢!
确切错误如下:
线程中的异常" main" java.lang.ArrayIndexOutOfBoundsException:4 在javaapplication.JavaApplication.main(JavaApplication.java:32) C:\ Users \ Juwon \ AppData \ Local \ NetBeans \ Cache \ 8.2 \ executor-snippets \ run.xml:53:Java返回:1 BUILD FAILED(总时间:0秒)
public class JavaApplication
{
public static void main(String[] args)
{
int[] grades = new int[4];
grades[0] = 77;
grades[1] = 84;
grades[2] = 80;
grades[3] = 96;
String[] Students = new String[] {"Tom", "Ed", "Joe", "Bob"};
double sum = 0.0;
System.out.print("#\tStudent\tGrade\n");
System.out.print("-\t-------\t-----\n");
int i = 0;
for(;i<grades.length;i++);
{
System.out.printf("%d\t%s\t%d\n", i, Students[i], grades[i]);
sum += grades[i];
}
double average = sum / grades.length;
System.out.printf("Class Average %f\n", average);
}
}
答案 0 :(得分:1)
for (; i < grades.length; i++);
&lt; ---最后看到分号,基本上这是执行)
和;
之间的所有代码,这不是'{1}}很多,这意味着您实际上可以删除循环,只对代码产生轻微的副作用。
相反,你应该做更像......的事情。
for (int i = 0; i < grades.length; i++) {
System.out.println(i);
System.out.printf("%d\t%s\t%d\n", i, Students[i], grades[i]);
sum += grades[i];
}
注意,现在我可以在没有问题的循环定义中包含i
这不是一个不常见的问题,将来你可能会重复几次
答案 1 :(得分:0)
for(;i<grades.length;i++);
分号是麻烦制造者。 这导致您的变量i超过数组的最后一个索引。因此,越界异常!!
答案 2 :(得分:0)
正如Elliot所说,从你的for循环结束时删除分号,你的代码应该可以正常工作。在for循环中初始化计数器变量也是常见的做法。 for循环标题应该看起来像
for(int i = 0;i<grades.length;i++)