public class SumSquares {
public static void main(String[] args){
    int num = 1;
    int square;
    int sum = 0;
    while(num <= 100){
        square = (num * num);
        sum = sum + square;
        num++;
    }
    System.out.println(sum);
}

}

Это то, как я пытался, в этом выходе 338350, но это не то, что я хочу

Это то, что я хочу ==> (1 + 4 + 9 + 16 + 25 + 36 + 49 + 64 + 81) = 285

выходные данные java-программы должны быть 285

-1
poorna1024 22 Окт 2017 в 14:14

3 ответа

Лучший ответ

Ваше условие остановки неверно, так как вы добавляете квадраты от 1 * 1 до 100 * 100. Вы хотите добавить квадраты от 1 * 1 до 9 * 9.

Так должно быть:

while (num < 10) {
    square = (num * num);
    sum = sum + square;
    num++;
}

Или

while (num * num < 100) {
    square = (num * num);
    sum = sum + square;
    num++;
}
1
Eran 22 Окт 2017 в 11:18

Некоторые альтернативы:

        int num = 1;
        int square =0;
        int sum = 0;
        while(true){
            square = (num * num);
            if(square >=100) {break;}
            sum = sum + square;
            num++;
        }
        System.out.println(sum);

        //using java 8 Stream
        int sumUsingStream =  IntStream.range(1, 100)
                .filter((v)-> (v*v) < 100 )
                .map(v -> v * v)
                .sum();

        System.out.println(sumUsingStream);
0
c0der 22 Окт 2017 в 13:00

Используя Java 9 потоки, вы можете сделать следующее:

System.out.println(IntStream.range(1, Integer.MAX_VALUE)
            .map(v -> v * v)
            .takeWhile(v -> v < 100)
            .sum());
0
M. le Rutte 22 Окт 2017 в 11:32