【发布时间】:2018-09-21 17:59:31
【问题描述】:
我现在正在学习考试。 我试图理解为什么输出 4 会在 5 工作时抛出异常,因为 f 来自 C1_A 类型。
错误 4 抛出: 线程“main”java.lang.Error 中的异常:未解决的编译问题: mt_A 无法解析或不是字段 在 C1_O.main(C1_O.java:15)
public class C1_A {
static int [] a = {4,3,2,9};
public int mt_A(int b) {
int[] a = {31,30,29};
return(a[b]);
}
}
public class C1_O {
public static void main (String args[]){
int a=2;
int b=2;
int c=a;
int d;
C1_A f = new C1_A();
a = C1_A.a[b];
System.out.println(a); //Output 1
System.out.println(c); //Output 2
System.out.println(f.mt_A(a)); //Output 3
C1_A.a[c+1]= 2;
d=C1_A.a[c-1];
System.out.println(f.mt_A(d)); //Output 4
System.out.println(f.mt_A(C1_A.a[3])); //Output 5
}
}
【问题讨论】:
-
拿一张纸和一支笔,把所有变量的初值写在一个表格里,然后按照程序把表格填满。
-
这是橡皮鸭调试的完美示例:en.wikipedia.org/wiki/Rubber_duck_debugging
-
您将在 //Output 3 bcz 您尝试将值分配给静态变量之后的行中收到错误
-
@GBlodgett 输出 5 不会抛出错误(据我所知)
-
您的输出 4 失败,因为您的数组长度为 3,这意味着您的最大索引为 2。但您传入的 d 值为 3。此索引不存在,因此出现 ArrayOutofbounds 异常。跨度>