[英]Enhanced For loop Java
我正在嘗試為以下整數數組編寫一個for循環。 數組的大小為10。我編寫了兩個循環。 第一個循環將增加該值,第二個循環將打印結果,例如Element 1為10,Element 2為20。但是我一直都得到0。 我給了以前的代碼,一切都很好。 出於測試的原因,我想實現增強的for循環。 但是我堅持2個問題,如何增加值以及如何定義arraylength。 這是我的代碼。
public static void main(String[] args) {
int[] myIntArray = new int[10];
for(Integer num: myIntArray){
myIntArray[num]=num*10;
}
for(int num:myIntArray){
System.out.println("Element " + num + ", value is " + myIntArray[num]);
}
}
以前的代碼
int[] myIntArray =new int[10];
for(int i =0; i<myIntArray.length;i++){
myIntArray[i]=i*10;
}
for(int i=0;i<myIntArray.length;i++){
System.out.println("Element " + i + ", value is " + myIntArray[i]);
}
首先,您必須用索引填充數組:
Arrays.setAll(myIntArray, i -> i);
之后,在輸出期間,您不應嘗試將值作為myIntArray[num]
,因為使用增強的for循環您已經具有一個值,但是沒有其索引。 所以結果代碼應該是這樣的:
public static void main(String[] args) {
int[] myIntArray = new int[10];
Arrays.setAll(myIntArray, i -> i);
for(Integer num: myIntArray){
myIntArray[num]=num*10;
}
for(int num : myIntArray){
System.out.println("Element " + num/10 + ", value is " + num);
}
}
盡管我同意以前的評論,但增強循環不是與數組索引一起使用的正確選擇。
它們都返回零,因為在構造數組時,數組中每個int的默認值為零。 然后將其乘以十。 仍將返回零。 您需要在使用for循環之前填充數組。
編輯:
看完您的編輯后,建議不要為此使用增強的for循環。 在正確的情況下使用增強的for循環是一個很好的工具。 它並不比常規的for循環自動更好,並且根據情況決定使用哪個循環。
int[] myIntArray =new int[10];
您實例化了一個由10個元素組成的數組,所有這些元素均為0。
這就是為什么在這里:
for(Integer num: myIntArray){
myIntArray[num]=num*10;
}
您的操作更像是0 * 10,即0。
for(int i=0; i<myIntArray.length;i++){
myIntArray[i]=i*10;
}
並顯示:
for(int num:myIntArray) {
System.out.println("Element " + num + ", value is " + num);
}
這很簡單。 0 * 10 = 0;)
您的int數組未初始化,並且int原語的默認值為0。如果要使用基於索引的值對其進行預設,則需要使用索引在數組上進行迭代或在循環中添加一個。
int index=0;
for(Integer num: myIntArray){
myIntArray[index]=(++index)*10;
}
要么
for(int index=0;index<myIntArray.length;i++){
myIntArray[i]=(i+1)*10;
}
對於每個對象,如果被循環的對象是數組,則將隱藏index變量。 如果要循環的對象是可迭代的類型,則for每個循環的實現將隱藏迭代器。 因此,如果它是一個數組,並且循環內需要一個索引,則最好使用帶有數組索引的循環。
因此,對於每個這樣寫的:
for(Integer num: myIntArray){
myIntArray[num]=num*10;
}
與以下情況類似,在您的情況下:
for(int i =0; i<myIntArray.length;i++){
myIntArray[i]=myIntArray[i]*10;
}
並且不要使用數組中的值在每個索引的側面進行索引,因為如果值恰好大於等於數組長度,則它將超出范圍而拋出索引。 這里不是,因為數組中的值是int類型,並且它們都被初始化為0,小於數組長度10。
for(int num:myIntArray){
System.out.println("Element " + num + ", value is " + myIntArray[num]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.