![](/img/trans.png)
[英]Write a program to round a number to the next multiple of 10 given the following conditions?
[英]Write a program to find sum of squares of all numbers given the following conditions?
给定两个数字n1和n2使得n2> n1,找到从n1到n2(包括n1和n2)的所有数字的平方和。
我的方法:
我尝试使用从n1
到n2
迭代的for循环来解决问题,但我得到了错误的答案
下面是我的代码函数:
public int computeSumofSquares (int n1, int n2)
{
int sum=0;
if(n2>n1)
{
for(int i=n1;i<=n2;i++)
{
sum=((sum)+(n1*n1));
}
}
return sum;
//write your code here
}
对于输入
Parameters Actual Output Expected Output
'8' '10' 192 245
你在每次迭代时都是n1
。 相反,你应该对i
。 作为sum=((sum)+(i*i));
的简短形式sum=((sum)+(i*i));
你可以写sum += i * i;
改变sum=((sum)+(n1*n1));
sum=((sum)+(i*i));
因为i
是增值的价值。
changes every time but in your statement sum=((sum)+(n1*n1));
在你的循环中, 每次都会改变,但在你的陈述中sum=((sum)+(n1*n1));
没有任何变化,每次在你的例子中你总和8 ^ 2,结果将是8 * 8 + 8 * 8 + 8 * 8 = 192。
to in that statement, something like sum=sum+i*i
, then you will get the result you want. 正如大家所说,如果你在那个陈述中将改为 ,就像sum=sum+i*i
,那么你将得到你想要的结果。
正如其他人已经说过的那样,你总是使用区间n1
的下限来计算sum
(而不是你的循环变量i
)。
为了完整起见,我发布了一个java8解决方案:
int n1 = 8;
int n2 = 10;
int sumOfSquares = IntStream.rangeClosed(n1, n2).map(i -> i * i).sum();
System.out.println(sumOfSquares); // 245
请检查IntStream
文档以获取进一步的参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.