2013-08-06 30 views
0

我需要一些有關此增強for循環的幫助。我想了解一個標準循環和while循環的編碼,請。謝謝。Ehanced For Loop到標準循環

public static int average(int...numbers) { 
    int total=0; 
    for(int x:numbers) 
     total+=x; 
    return total/numbers.length; 
} 
+7

你的問題到底是什麼? –

+0

這基本上是針對數字中每個元素的每個循環 – aaronman

+0

你想要完全理解什麼?上面的問題和while循環有什麼關係? – roippi

回答

2

在您的例子INT ......數字是一樣的「INT []號」

所以for循環將不得不遍歷數組。

 
    for(int i=0; i < numbers.length ; i++) 
    { 
     int x=numbers[i] 
     ... 
    } 
會是直接替代品。

1

你的for循環相當於:

for(int i=0;i<numbers.length;i++){ 
    int x = numbers[i]; 
    total+=x; 
} 

每個元素是爲了檢索,且環內的代碼是爲每個元素執行。

第一個操作int i=0;在進入for循環時執行,並且只執行一次。

第二個操作i<numbers.length是for循環繼續必須滿足的條件。這實際上可以是任何布爾表達式。我不建議讓你的布爾表達式過於複雜,但要注意它的可能性。一個例子:

boolean continueSumming = true; 
for(int i=0;i<numbers.length && continueSumming;i++){ 
    if(i>9) 
     continueSumming=false; 
} 

此循環將僅遍歷最多10個元素例如,作爲continueSumming變量將在第九元件被設置爲false(記住陣列0索引。)

的上次操作,每次迭代也執行i++。在這裏它增加i

i可以在這裏被稱爲sentinel變量,因爲它控制着循環執行何時結束。更多獎勵瑣事給你。

while循環更簡單,它會重複,直到某些條件不再成立爲止。這個while循環相當於你的for循環。

int index = 0; 
while(index < numbers.length) { 
    total += numbers[index]; 
    index += 1; 
} 

每個元素將被添加到總數,並且當索引大於或等於數組長度時,循環將退出。由於while循環的每次迭代都將索引遞增1,因此它將針對每個元素執行。

雖然環未通常用於迭代數組作爲for循環語法更簡潔,並且允許可變定點i掉出的範圍,而對於循環語法沒有。

+0

Downvoter,原因? –

+0

你的while循環版本不正確。 – Zong

+0

怎麼樣?我沒有看到任何錯誤。我相信你錯了@ZhengZhengLi –

0

假設您的問題是「使用for循環或while循環找到數組數組的平均值會有什麼區別?」,請繼續。

for (x : y)是一個循環,它允許您使用參考x對陣列y中的每個對象進行操作。

在你的例子中,int total=0;是平均計算的總和。

for(int x:numbers)允許在numbers通過x

total+=x;參考變量上運行的每一個整數代碼添加的當前數目的環路的處理是總,作爲平均計算器應該

total/numbers.length劃分總數除以數字量(數組numbers中的對象)返回;給出了平均值。

while循環循環直到布爾值,語句或條件爲false。

William Morrison通過使用整數來顯示循環正在處理哪個對象並創建一個條件來檢查即將存在的下一個對象是否存在 - 它的索引還是它的索引整數,超出numbers.length的範圍。

numbers[index]與for循環的情況下的x相同。

標準循環將採用while循環所執行的相同條件。

for (int index = 0; index < numbers.length; index = index + 1) { 
    total += x; 
} 

希望這可以幫助你更清楚地瞭解循環!