2013-08-06 3 views
0

Мне нужна помощь в этом усиленном цикле. Я хочу понять, как кодировать стандартный цикл и цикл while, пожалуйста. Благодарю.Ehanced For Loop to Standard 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

В вашем примере междунар ... номера так же, как «ИНТ [] номера»

Так что цикл должен перебрать этот массив.

 
    for(int i=0; i < numbers.length ; i++) 
    { 
     int x=numbers[i] 
     ... 
    } 
Будет ли прямая замена.

1

Ваш цикл эквивалентно:

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 будет установлено значение ложно на 9-м элементе (помните массивы 0 индексируется.)

последняя операция, i++ также выполняется каждая итерация. Здесь он увеличивает i.

i можно было бы назвать контрольной переменной здесь, поскольку она управляет, когда заканчивается выполнение циклов. Больше бонусов для вас.

Цикл while более простой, он повторяется до тех пор, пока какое-то условие перестанет быть истинным. Этот цикл while эквивалентен циклу for.

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

Каждый элемент будет добавлен к итогу, и цикл завершится, когда индекс будет больше или равен длине массива. Поскольку каждая итерация цикла while увеличивает индекс на 1, он будет выполняться для каждого элемента.

В то время как петли не обычно используется для перебора массивов в качестве синтаксиса for петли менее многословный, и позволяет переменные сторожевой i выпадает из сферы, в то время как для синтаксиса цикла не делает.

+0

Downvoter, причина? –

+0

Неверная версия вашего цикла. – Zong

+0

Как так? Я не вижу ошибки. Я считаю, что вы ошибаетесь @ZongZhengLi –

0

Предполагая, что ваш вопрос: «Какая разница между использованием цикла for или цикла while для поиска среднего числа чисел?», Здесь вы идете.

for (x : y) - это цикл, который позволяет работать с каждым объектом в массиве y с использованием ссылки x.

В вашем примере int total=0; - это общая сумма для среднего расчета.

for(int x:numbers) позволяет запускать код на каждое целом числе в numbers через контрольную переменную x

total+=x; добавляет текущий номер петля обработка в целом, как средний калькулятор должен

total/numbers.length делит общее количество номеров (объектов в массиве numbers), подлежащих возврату; дает среднее значение.

Цикл while цикл до тех пор, пока логическое значение, оператор или условие не будут ложными.

William Morrison показывает вам, как это делается, используя целое число, чтобы показать, какой объект обрабатывается циклом, и создание условия, которое проверяет, существует ли еще один объект, подлежащий обработке, - будь то его индекс или целое число, выходит за пределы numbers.length.

numbers[index] - это то же, что и x в корпусе for loop.

Стандартная петля принимает те же условия, что и цикл while.

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

Надеюсь, это поможет вам лучше понять петлю!