Сумма чисел между int low и int high;Джава - PullRequest
0 голосов
/ 10 октября 2018

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

Если даны два целых числа - низкий и высокий, представляющие диапазон, вернуть сумму целых чисел в этом диапазоне.,Например, если low равно 12, а high равно 18, возвращаемые значения должны быть суммой 12, 13, 14, 15, 16, 17 и 18, что составляет 105. Если low больше, чем high, вернуть 0.

У меня есть решение (я знаю, что это неправильно, не убивайте меня, пожалуйста):

public int sumRange(int low, int high)
{
    int sum = 0;
    for (int val = int low; val < int high; val++)
        sum += val;
    return val;
}

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Или вы можете использовать math , хотя вы должны быть осторожны с переполнением, если high очень велико:

public static int sumRange(int low, int high)
{
  return high >= low ? (high*(high+1) - low*(low-1))/2 : 0;
}
0 голосов
/ 10 октября 2018

У вас есть несколько проблем.

  1. Неверный синтаксис цикла.Вам не нужно повторно объявлять тип существующих переменных.
  2. Вы возвращаете val вместо sum.Поскольку val ограничено циклом, это ошибка компиляции.
  3. Ваш цикл заканчивается слишком рано.Это не включает в себя наибольшее значение.Чтобы включить его, используйте <= вместо <.

Фиксированный код

public class RangeTest1 {

    public static void main(String[] args){

        System.out.println(sumRange(12, 18)); // prints 105
        System.out.println(sumRange(18, 12)); // prints 0
        System.out.println(sumRange(18, 18)); // prints 18
    }

    public static int sumRange(int low, int high)
    {
        int sum = 0;

        for (int val = low; val <= high; val++){
            sum += val;
        }

        return sum;
    }
}

Вы получите 0, если low больше high бесплатно,поскольку цикл никогда не запускает никаких итераций, если это так.Начальное значение 0 сохраняется и возвращается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...