看起來很奇怪爲什麼整數數組重置爲默認值。在使用foreach推送值之後,java整數數組重置爲默認值
int[] y = new int[5];
int z = 0;
for(int j : y) {
j = z++;
System.out.print(j); //0 1 2 3 4
}
for(int j : y) {
System.out.print(j); //0 0 0 0 0
}
看起來很奇怪爲什麼整數數組重置爲默認值。在使用foreach推送值之後,java整數數組重置爲默認值
int[] y = new int[5];
int z = 0;
for(int j : y) {
j = z++;
System.out.print(j); //0 1 2 3 4
}
for(int j : y) {
System.out.print(j); //0 0 0 0 0
}
Java是傳值:
如果要修改數組使用正常的循環。因此,當您更改包含數組元素值的局部變量j
時,元素不會更改,只有局部變量。
要改變數組元素,你需要做的:
for (int j = 0; j < y.length; j++) {
y[j] = z++;
System.out.print(y[j]); // 0 1 2 3 4
}
不客氣:) –
Ĵ將具有Y [k]的的值內循環,但寫入它不會通過寫入陣列。
for(int i = 0; i < y.length; i++) {
y[i] = z++;
System.out.print(y[i]); //0 1 2 3 4
}
非常感謝... –
您指定的值到j,其中包含從數組複製值,而不是引用。
你需要的是:
for (int i=0; i<y.length; i++) {
y[i] = z++;
System.out.println(y[i]);
}
您還沒有分配值,您需要將其分配給一個臨時變量j的整數數組。嘗試以下,將打印更新值
int[] y = new int[5];
int z = 0;
for(int j =0 ;j< y.length ;j++) {
y[j] = z++;
System.out.print(y[j]); //0 1 2 3 4
}
for(int j : y) {
System.out.print(j); //0 1 2 3 4
}
非常感謝... –
在第一個for
循環中,打印的變量j
中的值不是來自該數組的值,因爲您在打印之前分配了一個新值(從z
)(j
)...
您的整型數組是空白的所以當您將打印0因爲它的整數 – Pratik
您的第一個循環實際上並不是寫入數組,因爲j是當前數組值的副本,而不是參考到它。您只需要在第一個循環中將j作爲參考:for(int&j:y) – qexyn