在循环外部访问java中的数组元素

时间:2015-09-19 12:53:12

标签: java arrays

我正在开发一个简单的程序来打印座位号,其中行的编号为1-5,而a-e的列编号。我正在使用的代码如下

public class JavaApplication5 {
    public static void main(String[] args) {
        int j =1,k;
        int i;
        char c;
        String[] arr = new String[25];
        for( i = 0;i < arr.length;i++)
        {
            while(j <= 5)
            {
                for(k = 97;k < 102; k++)
                {
                    c = ((char)k);
                    arr[i] = j + "" + c;
                    System.out.println(arr[i]);
                }
                j++;
            }
        }
    }
}

这显示了所需的结果。但是当我在for循环外部打印一个元素时,我得到的结果为null,如下所示

public static void main(String[] args) {
    int j =1,k;
    int i;
    char c;
    String[] arr = new String[25];
    for( i = 0;i < arr.length;i++)
    {
        while(j <= 5)
        {
            for(k = 97;k < 102; k++)
            {
                c = ((char)k);
                arr[i] = j + "" + c;
            }
            j++;
        }
    }
    System.out.println(arr[6]);
}

如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

这会将所有元素保留为空

String[] arr = new String[25];

这将迭代到j == 5,直到arr[5]

while(j <= 5) {
   j++;
}

因此arr[6]仍为空

答案 1 :(得分:1)

更改

  

arr [j] = j +“”+ c;

而不是

  

arr [i] = j +“”+ c;

现在可行。

public static void main(String[] args) {
    int j = 1, k;
    int i;
    char c;
    String[] arr = new String[25];
    for (i = 0; i < arr.length; i++) {
        while (j <= 5) {
            for (k = 97; k < 102; k++) {
                c = ((char) k);
                arr[j] = j + "" + c;
            }
            j++;
        }
    }
    System.out.println(arr[1]);
    System.out.println(arr[2]);
    System.out.println(arr[3]);
    System.out.println(arr[4]);
    System.out.println(arr[5]);
    System.out.println(arr[6]); // null because your check j <= 5 in while loop
}

答案 2 :(得分:0)

您可以在循环外部访问数组元素。在您的示例中,arr [6]只是null。故障不在您访问它的方式。 (虽然我还没看到这个bug;))

答案 3 :(得分:0)

代码中的问题是你只需要在索引1上写5次,然后在索引2上写5次,依此类推。 所以你从未在索引6上写过。 您的代码应更改为以下代码:

String[] arr = new String[25];
int i = 0;
int j = 1;
while (j <= 5) {
    for (k = 97; k < 102; k++) {
        c = ((char) k);
        arr[i++] = j + "" + c;
    }
    j++;
}
System.out.println(arr[6]);

因为你的循环运行了5 * 5次,所以你的i索引永远不会传递arr数组长度。 但你最好像这样控制它,以防止你的代码容易出错:

if(i < arr.length) {
    arr[i++] = j + "" + c;
} else {
    break;
}