Java 插入循环时数组中的值
我不明白为什么下面程序中的Java 插入循环时数组中的值,java,Java,我不明白为什么下面程序中的myArray[I]只打印了三次0 int[] myArray = new int[6]; for (int i = 0; i <= 5; i++) { myArray[i] = i++; System.out.println("myArray:"+myArray[i]); //need to know how to print this object myArray[i]? } System.out.println("Ou
myArray[I]
只打印了三次0
int[] myArray = new int[6];
for (int i = 0; i <= 5; i++) {
myArray[i] = i++;
System.out.println("myArray:"+myArray[i]);
//need to know how to print this object myArray[i]?
}
System.out.println("Outside for" +Arrays.toString(myArray));
我不明白为什么
myArray
总是0 您必须使用i+1
赋值,否则您的变量不会保存新值并跳过循环中的几个步骤。这就是为什么它只循环3次而不是6次,在影响循环的两个地方增加i++
。这样做:
myArray[i]=i+1;
或者只需将i
添加到数组中,具体取决于您:
myArray[i]=i;
阅读有关前缀和后缀运算符的更多信息。问题在于在两个不同的位置递增
i
。一个是:
for (int i=0;i<=5;i++) {
从第二个中删除
++
,它应该可以正常工作。无需增加i
两次,即i
在for循环中增加
以及在循环的第一行。还要注意,当您在循环内赋值时,i
的值在第i个索引处赋值,然后递增
int[] myArray=new int[6];
for (int i=0;i<=5;i++) {
// myArray[i]=i++; Do not increment i here
myArray[i]=i;
System.out.println("Value at "+i+"th index in myArray: "+myArray[i]);
}
System.out.println("Outside for" +Arrays.toString(myArray));
int[]myArray=newint[6];
对于(int i=0;i这就是发生的情况:
数组中的最终结果:[0,0,2,0,4,0]
关于解决此问题的方法,您可以看到其他答案。java中int的默认值为零。因此,int数组在其所有索引中都初始化为零。在循环的第一次迭代期间,以下是变量状态
myArray = [0, 0, 0, 0, 0, 0];
i = 0;
i的值为0,因此将0插入myArray[0]。然后i递增。现在您正在打印myArray[1]
的值,即“0”。在循环结束时,以下是变量的状态
myArray = [0, 0, 0, 0, 0, 0];
i = 1;
现在i的值由for循环递增,i的值变为2。现在插入2的值是myArray[2]
。然后i的值由于后增量运算符而递增。循环执行后,这是变量的状态
myArray = [0, 0, 2, 0, 0, 0];
i = 3;
myArray = [0, 0, 2, 0, 4, 0];
i = 5;
现在,i的值由for循环递增,i的值变为4。现在插入的4的值是myArray[4]。然后,i的值因后增量运算符而递增。循环执行后,这是变量的状态
myArray = [0, 0, 2, 0, 0, 0];
i = 3;
myArray = [0, 0, 2, 0, 4, 0];
i = 5;
现在i的值递增,for循环的条件被破坏。然后打印数组的值…哪个输出是以下数据
Outside for[0, 0, 2, 0, 4, 0]
由于增量后操作,myArray的值总是打印下一个位置的值。由于int的默认值是零,所以输出中总是打印零
如果您删除增量后操作,我想您会找到您正在尝试的内容
下面是一个关于如何使用EclipseIDE调试应用程序的链接
请注意,输入I++值的位置不是打印的值:
例如,在第一次迭代中,I=1
所以你输入myarr[1]值2。现在,I的值是2,所以当你想打印我的arr[I]时,你打印的是2,它是0。向上投票和向下投票?很有趣,但我不明白为什么。
Outside for[0, 0, 2, 0, 4, 0]