Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 插入循环时数组中的值_Java - Fatal编程技术网

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]