При рассуждении условия цикла, логическая проблема, возвращающая сумму квадратов ‹= n (мой первый ввод

У меня проблемы с моей логикой и рассуждениями с циклом while, и я возвращаю сумму положительных чисел n и сумму входов n в квадрате. Пожалуйста, посмотрите мой код и помогите, если это возможно, спасибо.

Упражнение было следующим: /* Напишите короткий метод Java, который принимает целое число n и возвращает сумму квадратов всех положительных целых чисел, меньших или равных n. * */

public class ch1dot7 
{
    public static void main (String[]args)
    {
        Scanner input = new Scanner(System.in);
    int n, m = 0, sum = 0;

    System.out.print("Please enter a value for n: ");
    n = input.nextInt();

    System.out.println("n is currently: "+n);

    if (n <= 0)
    {
        System.out.print("Please enter a value that is higher than 0   (integer)");
        n = input.nextInt();
    }

    while  (sum > n)
    {

        System.out.print("Please enter a value for m (enter a value greater     than n to exit): ");
        m = input.nextInt();

        if (m < n)
        {
            sum += m*m;
            System.out.println("sum of the squares is: " +sum); 
        }

        sum += m*m;
    }

}//end main


}//end class

person ggx7    schedule 25.11.2015    source источник
comment
Поскольку это задание, я не собираюсь давать вам ответ. Вы должны взглянуть на свое условие while (sum › n) и подумать, когда это будет/не будет правдой. Вы также должны учитывать, какой код внутри цикла while на самом деле вызывает вычисление суммы квадратов всех положительных целых чисел, меньших или равных n.   -  person Lukasz P.    schedule 25.11.2015


Ответы (1)


Вы неправильно поняли задание. Присваивание не просит вас принимать данные от пользователя. Единственным входом для метода является n.

Вопрос состоит в том, чтобы создать метод, который принимает целое число n и возвращает сумму квадратов всех положительных целых чисел, меньших n.

Например, если n равно 5, вам нужно просуммировать квадраты чисел меньше пяти, то есть числа от 1 до 4 следующим образом:

(1*1) + (2*2) + (3*3) + (4*4)

1 + 4 + 9 + 16 = 30

Ваш метод должен вернуть 30

В цикле while вы запрашиваете у пользователя дополнительный ввод и сохраняете его в переменной m. Это не нужно. Переменная m не нужна.

Ваш цикл while должен продолжаться, пока переменная счетчика меньше n, и счетчик должен увеличиваться в каждом цикле. Начните счетчик с 1 и продолжайте цикл, пока этот счетчик меньше n.

public static int sumOfSquares(int n) {
    // here you can check if n is greater than 0

    int counter = 1;
    int sum = 0;
    while (counter < n) {
        // [ sum up the square of the counter ]
        counter++;
    }

    return n;
}
person Noah    schedule 25.11.2015