Вызов функции из другой функции java
Всем добрый день. Задание, подсчитать сумму введенных чисел в заданном диапазоне и среднее арифметическое. Все значения вывести на экран. У меня, первая функция делает подсчет суммы от заданного числа до заданного числа, вторая функция должна делать подсчет среднего арифметического значения, но у меня не получается. Нужно вызвать из второй функции первую функцию не используя передачи в функцию functionArithmeticalMean третьего аргумента. Подскажите как правильно?
import java.util.Scanner;
class Test
{//найти сумму чисел в диапазоне от rangeBeginning до rangeEnd и среднее арифметическое
public static int functionRangeOfNumbers(int rangeBeginning, int rangeEnd)
{
int rangeOfNumbers = 0;
for (int i = rangeBeginning; i < rangeEnd; i++)
{
rangeOfNumbers += i;
}
return rangeOfNumbers;
}
public static int functionArithmeticalMean(int rangeBeginning, int rangeEnd)
{
return functionRangeOfNumbers(rangeBeginning, rangeEnd) / (rangeEnd / rangeBeginning + 1);
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int rangeBeginning;
int rangeEnd;
int sumOfNumbers;
int arithmeticalMean;
System.out.println("Введите начальное число");
rangeBeginning = sc.nextInt();
System.out.println("Введите конечное число");
rangeEnd = sc.nextInt();
sumOfNumbers = functionRangeOfNumbers(rangeBeginning, rangeEnd);//сумма чисел
arithmeticalMean = functionArithmeticalMean(rangeBeginning, rangeEnd);//среднее арифметическое
System.out.println("Сумма чисел " + sumOfNumbers);
System.out.println("Среднее арифметическое " + arithmeticalMean);
}
}
Ответы (2 шт):
Вы тут не учитываете последний элемент, надо все-таки <=:
for (int i = rangeBeginning; i < rangeEnd; i++)
Вам, также, необходимо посчитать количество элементов в вашем диапозоне. Можно, например, сделать глобальную переменную, и инкрементировать её в цикле в методе functionRangeOfNumbers.
Метод functionArithmeticalMean мне кажется излишний, т.к. ср. арифмитическое вы можете подсчитать arithmeticalMean = sumOfNumbers / amount, где amount это количество элементов в вашем диапозоне.
Решение как всегда банально и просто. В место знака деление нужен знак минус и все получится! Возможно кому то пригодится. Не забудьте поставить в цикле for значение (<=)
public static int functionArithmeticalMean(int rangeBeginning, int rangeEnd)
{
return functionRangeOfNumbers(rangeBeginning, rangeEnd) / (rangeEnd - rangeBeginning + 1);
}