因此,我试图通过循环来计算从0到给定数字(n)的所有数字,但我似乎无法管理该方法。
public static int sumOfNumbers(int... params) {
int sum = 0;
for (int i : params) {
sum = i;
};
return sum;
}
答案 0 :(得分:3)
您正在覆盖sum
,而不是添加它。您应该使用+=
运算符,而不是=
运算符:
sum += i;
或者,您可以将其视为数学问题,并使用sum of an arithmetic progression的公式:
public static int sumZeroToN(int n) {
return n * (n + 1) / 2;
}
答案 1 :(得分:2)
您可以使用IntStream
中的sum
:
return Arrays.stream(params).sum();
答案 2 :(得分:2)
这是一个系列中数字的总和,因此您可以在O(1)中使用以下方法进行操作:
int sum = n * (n + 1) / 2;
n
是params
中最高的数字,params
是从0
到n
的数字的数组/集合。
答案 3 :(得分:1)
您要覆盖每个循环的var sum,而忘记求和,您需要将代码更改为以下内容:
html,body {
width: 100%;
height: 100vh;
margin: 0 auto;
padding: 0;
background-color: dimgray;
}
nav{
background-color: aqua;
position: fixed;
top: 0;
left: 0;
width: 100%;
display: flex;
}
.logo{
padding: 10px;
}
.nav-wrapper{
margin-left: auto;
}
ul {
display: flex;
}
li{
list-style: none;
}
a{
display: block;
padding: 10px;
}
答案 4 :(得分:1)
因为您希望从0到n,所以可以使用IntStream
例如
IntStream.rangeClosed(0, n).sum()
答案 5 :(得分:0)
int sum = 0;
for (int i = 0; i <= n; i++) {
sum = sum + i;
}
System.out.println(sum);
答案 6 :(得分:0)
您正在尝试计算算术级数总和,因此您无需循环即可执行此操作:
sum =(((param + 1)* param)/ 2;
param是给定的数字。
答案 7 :(得分:0)
用于循环,而不用于每个循环!对于每个循环,请使用一个列表。
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;