用户定义的二维数组大小(Java)

时间:2012-12-12 04:43:33

标签: java arrays user-defined

我是java的新手,我正在尝试创建一个用户定义大小的数组。我正在盯着用零填充整个阵列并从那里移动。我应该怎么做呢?我现在所拥有的是类似于:(输入是我的扫描仪对象)

int num1, num2, num3 = 0, num4 = 0, active = 0;

num1 = input.nextInt();
num2 = input.nextInt();

int[][] ver = new int[num1][num2];

while(active == 0){

    ver [num3][num4] = 0;
    ++num4;

    if(num4 > num2){

        ++num3;
        num4 = 0;
    }

    if(num3 > num1){

        ++active

    }

}

这一直给我一个ArrayIndexOutOfBoundsException:0,让我认为ver [0] [0]不存在。提前谢谢。

3 个答案:

答案 0 :(得分:0)

您的代码中没有检查num3num4的值。如我所设想的那样添加适当的限制,你不应该分别在num1num2之间做出更大的限制。

如果num3或num4的值超出限制,则会获得ArrayIndexOutOfBoundException

答案 1 :(得分:0)

您没有正确检查num3num4(它们都被允许到达上限),因此它们最终将超出范围。

由于您只是尝试用零填充数组,为什么不考虑以下代码:

import java.util.Arrays;

// ...

int num1 = 2; // fixed number just for test purposes
int num2 = 2; // fixed number just for test purposes

int[][] ver = new int[num1][num2];
for (int[] row: ver)
    Arrays.fill(row, 0);

System.out.println(ver[0][0]); // prints 0 as expected

由于每个子数组(示例中为row)都是一个数组,上面的代码将遍历它们,用零填充它们,利用fill类的Arrays方法,您需要导入,如示例所示。

答案 2 :(得分:0)

num4 == num2检查num4 > num2时失败;因为num2是数组的长度,而索引转到length-1。与num3num1比较相同。在比较中使用num2-1num1-1,如下所示:

    int num1=0, num2=0, num3=0,num4=0;
    num1 = input.nextInt();  //<--Input a value >0
    num2 = input.nextInt();  //<--Input a value >0
    int[][] ver = new int[num1][num2];
    int active = 0;
    while(active == 0){
        ver[num3][num4] = 0;
        ++num4;
        if(num4 > num2-1){     // or if(num4 >= num2)
            ++num3;
            num4 = 0;
        }
        if(num3 > num1-1){     // or if(num3 >= num1)
            ++active;
        }
    }