【问题标题】:Can´t load a two dimensional array无法加载二维数组
【发布时间】:2019-10-25 09:24:45
【问题描述】:

第一个 for 循环似乎只执行了一次,而第二个(内部)for 循环工作正常。 我尝试了所有我知道的循环类型,但总是得到相同的结果。 我通常不会遇到这些循环问题,所以我很好奇问题可能是什么。

    public class xirtam {

        public static void main(String[] args) {

            try {

                int max_columns = 10;
                int max_characters_in_a_column = 30, sign;
                int array[][] = new int[max_columns][max_characters_in_a_column];


                for(int y=0;y<=max_columns;y++) {  

> // This loop seems to be executed just 1 time


                    for (int x=0 ; x<=max_characters_in_a_column ; x++) {  

> //This loop works fine for some reason


                        sign = (int) (Math.random() * ((256 - 0) + 1));

                        array[y][x] = sign;

                        System.out.println("column " + y + " character " + x + ":"+ array[y][x]); // prints out the "column" and "character" where the loop is currently working

                        //Thread.sleep(100);
                    }

                }

            } catch (Exception e) {
            }

        }
    }

【问题讨论】:

  • 是否有理由禁止所有异常?
  • 不是真的,我问了同学和朋友,他们告诉我试着压制异常看看发生了什么。

标签: java arrays loops nested-loops


【解决方案1】:

您在array[y][x] = sign; 获得了Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 30 out of bounds for length 30。因此。

在第二个 for 循环中使用 x&lt;max_characters_in_a_column 而不是 &lt;=。这将解决您的问题。第一个循环也是如此。

数组的最大索引为array[9][29],因为您已将维度定义为 10 和 30。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多