Не возвращает значение из цикла for
Сделайте функцию, которая рассчитывает заданную сумму типа 10+20+30+40. Сделайте так, чтобы её начальное значение было параметром и каждый раз слагаемое увеличивалось бы на 10. Количество слагаемых тоже может быть параметром. Используя эту функцию рассчитайте значение однотипных выражений:
(10+20+30+40 ) + (100+ 110+120+130+140 ) + (220+230+240)
То есть в нём будет три раза вызвана ваша функция с разными входящими параметрами (разное стартовое число и разное количество слагаемых).
class Main{
public static void main(String[] args) {
int ss = summ(1, 2, 3, 4, 5, 6);
System.out.println("Сумма: " + ss);
}
public static Integer summ(int start1, int numberOfRepetitions1, int start2, int numberOfRepetitions2, int start3, int numberOfRepetitions3) {
int summ1;
int summ2;
int summ3;
for(int i = numberOfRepetitions1; i > 0; i--) {
int summ1 = start1 +10;
return summ1;
}
for(int i = numberOfRepetitions2; i > 0; i--) {
int summ2 = start2 +10;
return summ2;
}
for(int i = numberOfRepetitions3; i > 0; i--) {
int summ3 = start3 +10;
return summ3;
}
int summa = summ1 + summ2 + summ3;
return summa;
}
}
Не получается сложить summ1 + summ2 + summ3. Пишет якобы эти значения не видны, хотя я их выношу за цикл return summ1
Ответы (3 шт):
public class Main {
public static void main(String[] args) {
Integer sum = sum(1, 2, 3, 4, 5, 6);
System.out.println("Сумма: " + sum);
}
public static Integer sum(int ... arr) {
int sum = 0;
for (int i = 1; i < arr.length; i+=2) {
sum += calculate(arr[i-1], arr[i]);
}
return sum;
}
private static int calculate(int value, int count) {
int result = 0;
for (int i = 0; i < count; i++) {
result = result + value + i * 10;
}
return result;
}
}
В целом код странный,к примеру, вызов return внутри цикла выглядит подозрительно. Это означает, что любой из этих циклов прерывается на первой итерации. Тогда возникает справедливый вопрос: зачем вообще нужен цикл?
Это задача на знание формул арифметической прогрессии. Я не за компом, поэтому напишу только формулы.
Дано:
Int d =10; - разность;
Ввод:
Int a1; -начальное значение прогрессии
n- количество членов прогресси ;
Найти:
an - последний член прогрессии;
Sn- сумма прогресси;
Решение
an=a1+d(n-1);
Sn=((a1+an)*n)/2;
Оберните это в метод к примеру MyProgres(a1,n) и соответственно 3 раза вам надо ее вывести и сложить.
int sum =MyProgres(10,4) +MyProgres(100,5)+MyProgres(220,3);
Ну вот ответ с циклом просто вместо уравнения суммы, цикл. Можно вообще супер костыль написать, каждую сумму записываете в массив потом сложение , но это смешно
public class primer {
public static int d =10;
public static int mySumm(int a1,int n){
int sum=0;
for(int n1=1;n1!=n+1;n1++){//меньше либо равно нету на телефоне
sum+= a1+d*(n1-1);
}
return sum;
}
public static void main(String[] args) {
System.out.println(mySumm(10,4)+
mySumm(100,5)+
mySumm(220,3));
}
}