能否请您解释问题B的解决方案? 我认为这些代码对第8行不起作用,因为当移至第6行时它已经超出了边界。该数组只有50个元素(索引从0到49),但是在while循环中,它检查t <= 100
考虑以下Java代码片段:
A-第一条System.out.println语句(第3行)执行后的输出是什么?
B-您如何描述第二个输出的数字列表 System.out.println语句(第8行)?
public static void main(String[] args) {
int [] x = {0,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1}; // x has 50 elements
int i, t;
for (i=2; i<8; i++) // line 1
if (x[i]!=0){ // line 2
System.out.print(i+ " "); // line 3 – for question A
t=2*i; // line 4
while (t<=100){ // line 5
x[t]=0; // line 6
t+=i; // line 7
}
}
System.out.println();// line 8 – for question B
for (i=2; i<=50; i++)
if (x[i]!=0)
System.out.println(i);
}
解决方案是: 2 3 4 5 6 7 8 9 10 11 12 ... 47 48 49 线程“主”中的异常java.lang.ArrayIndexOutOfBoundsException:Parray3.main(Ass3.java:20)处为50