我刚开始学习java。看看我的代码,使用增强的for循环为2D数组的每个元素添加1。我还在eclipse中附加了我的代码图像。Code for Enhanced for loop
package multi_array;
public class MainClass {
public static void main(String args[]){
int array[][]={{1,2,3}, {4,5,6}, {7,8,9}};
add_1(array);
}
public static void add_1(int a[][]){
for(int[] a_row: a){
for(int i: a_row){
a_row[i]+=1;
}
}
for(int[] a_row: a){
for(int i: a_row){
System.out.print(a_row[i]+"\t");
}
System.out.println("\n");
}
}
}
现在,当我尝试运行该程序时,我会在下面显示错误消息。我还附上了错误消息的图片。Error message
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at multi_array.MainClass.add_1(MainClass.java:12)
at multi_array.MainClass.main(MainClass.java:6)
如何更正此代码?
好的朋友首先抱歉我的代码输入不好,毕竟这是我在stackoverflow上的第一个问题。我通过替换
获得了正确的结果for(int i: a_row){
a_row[i]+=1;
}
代码
for(int i=0; i<a_row.length; i++){
a_row[i]+=1;
}
但我只是想知道我是否可以通过仅使用foreach循环来获得所需的结果。
答案 0 :(得分:0)
<?= Html::csrfMetaTags() ?>
包含二维数组的所有行
访问a_row
行的a_row[i]
值,但您没有i
在您的代码中更改如下
a_row[3]
答案 1 :(得分:0)
您的问题是i
的值大于数组中的值。
你遇到了这个问题,因为你在循环中使用数组的实际元素作为索引。
当我查看您的方法名称时,我认为您只想增加数组中的每个整数。
您可以通过以下方式修复代码:
for(int[] a_row: a)
{
for(int i:a_row)
{
i += 1;
}
}
我认为你应该阅读foreach-loops如何工作。关于这个主题的问题已经有了很好的答案:here。