2016-09-25 4 views
0
import static java.lang.Math.pow; 

class projectThreeQ2{ 
public static void main (String args[]){ 

//Q2: Write a for statement to compute the sum 1 + 2^2 + 32 + 42 + 52 + ... + n2. 

int n = 7; 
int sum = 0; 

for (int i = 0; i < n; i++){ 
    sum = sum + (int)Math.pow(n,2); 
} 

System.out.println(sum); 
} 
} 

Вопрос заключается в том, чтобы сделать цикл for к сумме n^2.Java for-loop to power

Так что в моем случае; 36. которое равно 91. Однако, когда я запускаю мой код я получаю 343. Почему?

+2

Math.pow (i, 2) ... – chenchuk

+0

у вас есть общая сумма из 3 переменных. запустите свой код шаг за шагом и посмотрите на значение каждой переменной на каждом шаге и на значение аргумента каждой функции. – njzk2

+0

NB вам не нужно указывать int, если вы просто используете 'i * i' вместо' Math.pow (i, 2) '. –

ответ

10

Вы используете неправильную переменную внутри for -loop. Вы используете n вместо i. Правильный код:

for (int i = 1; i <= n; i++){ 
    sum = sum + (int)Math.pow(i,2); 
} 

Отредактировано потому, что цикл должен работать от 1 до n (включительно) в соответствии с вопросом запроса.

+0

Мне так глупо. Благодаря! – Kasper

+0

@ Kasper, вы также должны начать итерацию с 1. Проверьте мой ответ, ура! –

+0

@WojciechKazior Mathematical нет никаких оснований для начала с 1. Это приведет к той же сумме. Так почему же он должен начинать с 1? – Seelenvirtuose

0

Вы используете п вместо я

 sum = sum + (int)Math.pow(i,2); 

И еще одна вещь, так как вы не используете импорт статические, нет необходимости в Math.pow, просто использовать Pow иначе удалить ввозных

0

тот, который вы должна быть i - не n. Кроме того, i должен начинаться с 1 и заканчиваться на n. Таким образом, цикл должен выглядеть следующим образом:

for (int i = 1; i <= n; i++) 
    sum = sum + (int)Math.pow(i,2);