我无法向数组输入值

时间:2015-07-27 22:43:49

标签: java

Scanner input = new Scanner(System.in);
    System.out.println("What dimensions do you need");
    int z = input.nextInt();
    int y = input.nextInt();
    int[][] x = new int[z][y];
    for (int i = 0; i <= z; i++) {
        for (int j = 0; j <= y; j++) {
            System.out.println("What number do you want in " + i + " , "
                    + j);
            x[i][j] = input.nextInt();

        }
    }

达到特定尺寸后,程序停止。如果我输入维度(1,1),它不会让我将值加到(1,1);我只能输入0,0和0,1的值。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:3)

阵列从0开始。你需要少于,不少于平等。变化

for (int i = 0; i <= z; i++) {
    for (int j = 0; j <= y; j++) {

for (int i = 0; i < z; i++) {
    for (int j = 0; j < y; j++) {

和维度1,1将是包含长度为1的数组的长度为1的单个数组的空间。增加任何维度的大小以添加多个值。

答案 1 :(得分:0)

这是因为您为阵列分配了更少的内存。

答案 2 :(得分:0)

看看你的for循环:

for (int i = 0; i <= z; i++) {
        for (int j = 0; j <= y; j++) {

应该是

for (int i = 0; i < z; i++) {
        for (int j = 0; j < y; j++) {

答案 3 :(得分:0)

大多数编程语言中的数组都有基于0的索引。

这意味着int[+ a = new int[2]在索引0和1处有两个元素。因此a[0]是有效索引,a[1]也有效但a[2]不是。此外,这意味着当您遍历数组时,您不需要在索引上使用<=<作为条件,因为,例如

for (int i = 0; i <= 3; ++i)

将针对i = 0, 1, 2, 3的值进行迭代,但3是new int[3]中的无效索引,因此您需要执行for (int i = 0; i < 3; ++i)