2016-11-08 2 views
2
class Example { 
    public static void main(String args[]) { 
     double nums[] = {10.1, 11.2, 12.3, 13.4, 14.5}; 
     double result = 0; 
     int i; 

     for(i=0; i<5; i++) 
     result = result + nums[i]; 

     System.out.println("Average is " + result/5); 
    } 
    } 

Извините, если вопрос слишком глуп, чтобы спросить, но мне нужно знать. почему мы должны объявлять двойной результат = 0? и зачем писать результат = результат + nums [i]? почему мы не можем написать только результат = nums [i]?Результат = результат + [i]?

+1

1. 'result = 0' - инициализирует результат, потому что это хорошая практика программирования. 2. 'result = result + nums [i]' продолжает добавлять к результату предыдущее назначенное значение 'result' плюс текущее значение (nums [i]') в массиве. – Laazo

+0

Если вы добавляли 'nums' на бумаге, вы начинаете с нуля, тогда для каждого значения вычеркиваете старое общее количество, добавляете новый' nums [i] ', а затем записываете новое значение вниз. Это в основном, как представить ответы на ваши вопросы. –

+0

его простой, мы сохраняем результат суммы всех элементов, замеченных до сих пор. для первого элемента мы видели только один элемент, поэтому результат начинается с нуля, и мы добавляем любое число, которое мы видим до тех пор, пока не увидим последний элемент. – Arthas

ответ

2

Почему мы должны объявлять двойной результат = 0?

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

Почему написать результат = результат + nums [i]? почему мы не можем написать только результат = nums [i]?

результат = НУМС [I] присваивает только значение в переменной.
результат = результат + НУМС [I] присваивает значение суммы результата и НУМС [я].

Вы также можете использовать это.

result += nums[i]; 

вместо этого.

result = result + nums[i]; 
1

Запись result = nums [i] присвоит значение nums[i] для result, при написании result = result + nums[i] присвоит текущее значение result плюс nums[i] к result.

Таким образом, каждый раз, когда вы идете вокруг петли, вы добавления Значение nums[i] в result, вместо того, чтобы заменить его.

Декларирование result = 0 просто инициализирует result к значению 0.

+0

Спасибо большое! :) другой вопрос, что, если я не пишу двойной результат = 0? – Ladywithahat

+0

_result = 0_ просто инициализирует _result_ до значения 0. Если вы этого не сделаете, компилятор будет жаловаться при попытке добавить _nums [i] _ к нему, так как он пытается добавить _nums [i] _ в неизвестное значение. Посмотрите [здесь] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html) (в разделе «Значения по умолчанию») для получения дополнительной информации. – Gulllie

0

Alright! Хорошо! Хорошо, вот оно. Простое объяснение -

Предположим, вы пишете результат = Num [I] внутри для цикла.

Во время итерации внутри петли, где вы пишете System.out.println («Средний результат» + результат/5);

Последующий выход будет -

For Iteration 1 - Average is 10.1/5 
For Iteration 2 - Average is 11.1/5 
For Iteration 3 - Average is 12.3/5 
and So on.. for next two iterations. 

Как вы можете видеть, они не добавляют вверх. Простое разделение индекса вашего массива и его печать. Таким образом, чтобы добавить значения индекса вашего массива, Вам необходимо результат = результат + Nums [I]

Теперь, вот поворот. Поскольку вы пишете result = result + nums [i], таким образом обновляя значение результата. Для первой итерации не будет предыдущего значения результата. Нет обновления со времени предыдущего Значение неизвестно. Следовательно, вы получили ошибка компиляции.

Смежные вопросы