#java #loops #sum
#java #циклы #сумма
Вопрос:
Итак, я пытаюсь вычислить все числа от 0 до заданного числа (n) с помощью цикла, как показано в моем коде, но я просто не могу понять, как это сделать.
public static int sumOfNumbers(int... params) {
int sum = 0;
for (int i : params) {
sum = i;
};
return sum;
}
Комментарии:
1. Вам нужно добавлять к
sum
, а не присваивать ему2. попробуйте это
sum = i;
Ответ №1:
Вы перезаписываете sum
, а не добавляете к нему. Вы должны использовать =
оператор вместо =
operator:
sum = i;
В качестве альтернативы, вы можете рассматривать это как математическую задачу и использовать формулу для суммы арифметической прогрессии:
public static int sumZeroToN(int n) {
return n * (n 1) / 2;
}
Ответ №2:
Это сумма чисел в ряду, поэтому вы можете сделать это в O (1), используя:
int sum = n * (n 1) / 2;
Где n
наибольшее число в params
, params
являющееся массивом / коллекцией чисел от 0
до n
.
Ответ №3:
Вы могли бы использовать sum
из IntStream
:
return Arrays.stream(params).sum();
Ответ №4:
вы пытаетесь вычислить сумму арифметического ряда, поэтому вы можете просто сделать это без цикла:
сумма =((параметр 1)* параметр)/ 2;
параметр — это заданное число.
Ответ №5:
Вы перезаписываете переменную sum в каждом цикле и забываете суммировать, вам нужно изменить свой код на что-то вроде этого:
public static int sumOfNumbers(int... params) {
int sum = 0;
for (int i : params) {
sum = i; //Same as sum = sum 1;
};
return sum;
}
Ответ №6:
Поскольку вы хотите от 0 до n, вы могли бы использовать IntStream
например
IntStream.rangeClosed(0, n).sum()
Ответ №7:
int sum = 0;
for (int i = 0; i <= n; i ) {
sum = sum i;
}
System.out.println(sum);
Ответ №8:
Используйте цикл for, а не для каждого цикла! Для каждого цикла используйте with a List.
int sum = 0;
for(int i=0; i<n; i ) {
sum = i // same as sum = sum i;
}
return sum;
Или просто использовать:
int sum = n * (n 1) / 2;