Я пытался запустить этот код, он работает без выдачи ошибки, и вопрос заключается в том, что он не выполняется для циклов. Я только новичок, поэтому, пожалуйста, - PullRequest
0 голосов
/ 03 марта 2020

Найти сумму всех четных целых чисел от 2 до входного значения?

import java.util.Scanner;

public static void main(String[] args) {
    //initialization and declaration of variable
    int input, sum = 0;
    Scanner sc = new Scanner(System.in);

    //Ask user to input data
    System.out.print("Enter a number you want to limit up-to : ");
    input = sc.nextInt();

    //Conditions
    if(input < 2) {
        System.out.println("Error Occurred! Please, Enter a number greater or equal to 2. ");
    }

    for (int i = 2; i <= input; i++ ) {
        if( i % 2 == 0) {
            sum += i;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы должны напечатать свой результат sum. Добавление System.out.println("the sum is:" + sum) до закрытия основного метода. Вот полный код:

import java.util.Scanner;
public class Test {
        public static void main(String[] args) {
        //initialization and declaration of variable
        int input, sum = 0;
        Scanner sc = new Scanner(System.in);

        //Ask user to input data
        System.out.print("Enter a number you want to limit up-to : ");
        input = sc.nextInt();

        //Conditions
        if(input < 2) {
            System.out.println("Error Occurred! Please, Enter a number greater or equal to 2. ");
        }

        for (int i = 2; i <= input; i++) {
            if( i % 2 == 0) {
                sum += i;
            }
        }
        System.out.println("the sum is:" + sum);
    }
}

Как сказал Тим-Хантер , вы можете установить шаг i равным 2. Поскольку если i является четным, то i+1 должно быть нечетным. Код как это:

for (int i = 2; i <= input; i+=2) {
  if( i % 2 == 0) {
    sum += i;
  }
}
0 голосов
/ 03 марта 2020

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

если вы знаете AP, вы можете легко увидеть, что вы находите сумму AP

, поэтому ваш первый член a = 2, как вы сказали.

ваша общая разница d = 2 как только четные числа.

последний член l = ввод пользователя = a + (n-1) d;

т. Е. N = (l - a) d + 1. и сумма = n / 2 (a + l).

Примечание в коде проверяет, вводит ли пользователь нечетное число в качестве входных данных, поскольку последний член AP с общей разницей 2 не может быть нечетным, если пользователь вводит нечетное число, вы вычитаете одно из него, иначе оставляете его,

это просто как

if(input % 2 == 0) input -=1;

numberOfTerms = (input - 2 )/2 + 1; // numberOfTerms равно n;

sum = (numberOfTerms(2 + input))/2; // входное значение равно l;

...