我的第二个打印行中有例外。
int num[] = {50,20,45,82,25,63};
System.out.print("Given number : ");
for(int d:num){
System.out.print(" " + num[d]);
}
控制台输出
Given number : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 50
为什么不采用所有数组元素而只采用50?
答案 0 :(得分:6)
在for(int d:num)
循环中,每个项目都由d
而非num[d]
所以,这是应该如何做的。
for(int d:num){
System.out.print(" " + d);
}
简单的干运行会告诉你哪里出错了。
对于第一个循环,您的陈述将归结为
num[50]
,这在任何地方都无法使用,因此您将获得例外。
但是,如果您尝试使用索引编制,那么下面的一个简单技巧就可以解决问题
int index = 0;
for(int d:num){
System.out.print(" " + num[index++]);
}
但我真的相信,这是不正确解决问题的方法。
答案 1 :(得分:3)
对于每个循环 num [any index] 不是必需的。它只是从第一个索引检索到最后一个索引,并将它们中的每一个分配给变量d。所以你只需要打印值d。
for(int d:num){
System.out.print(" " + d);
}
答案 2 :(得分:1)
使用增强型for循环,您可以直接在示例中使用可变“d”:
System.out.print(d);
获得ArrayIndexOutOfBound的原因是num[d]
尝试在第一次迭代时访问数组中的第50位。 (哪个超出范围)。
答案 3 :(得分:0)
在使用每个循环时,不要使用数组索引。
在您的代码中,
int num[] = {50,20,45,82,25,63};
System.out.print("Given number : ");
for(int d:num)
{
System.out.print(" " + num[d]);
}
第一次迭代中的将产生d = 50
,这是您想要的结果。如果您使用num[d]
,则会产生num[50]
,这是错误的索引。
相反,请使用以下代码
for(int d:num)
{
System.out.print(" " + d);
}
答案 4 :(得分:0)