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的值。我该如何解决这个问题?
答案 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)
。