我正在开发一个简单的程序来打印座位号,其中行的编号为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]);
}
如何解决这个问题?
答案 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;
}