这是我所拥有的,但它不起作用。当我尝试编译时,我收到此错误消息:
int result = 0;
^^^^^^^^^^^^^^^
无法访问的代码
我的代码:
public int sumOfOddIntegers (int n) {
if(n < 1);
return 0;
int result = 0;
for(int i = n - 1; i > 0; i--)
{
if(i % 2 != 0) {
result = result + i;
}
}
return result;
}
答案 0 :(得分:4)
if(n < 1);
return 0;
相当于:
if(n < 1) {
}
return 0;
应该替换为:
if(n < 1)
return 0;
或(正确的方式)
if(n < 1) {
return 0;
}
答案 1 :(得分:3)
声明:
if(n < 1);
因为分号而无操作。无论比较结果如何,都会对比较进行评估,不做任何事情。
然后,执行下一行,返回0.
答案 2 :(得分:0)
if(n < 1);
是你的问题。其余代码无法访问,因为始终执行以下return'
。在;
之后删除if(n < 1)
。
答案 3 :(得分:0)
正如其他人所说,if语句中的半冒号是问题所在。但就个人而言,我会这样做:
public int sumOfOddIntegers (int n)
{
int result = 0;
if(n < 1)
return result;
for(int i = 1; i <= n; i += 2)
{
result += i;
}
return result;
}
这样,您可以将迭代次数减半。我们知道每个其他数字都是奇数,所以为什么甚至打扰迭代偶数,并检查它们是否奇怪,当我们知道它们不是?
答案 4 :(得分:0)
序列是算术级数,常见差异为2。 所以它的总和将由公式给出:
sum = n / 2(2a +(n-1)d
其中n = Math.ceil(k);其中k是给定的数字。 并且d = 2,a = 1
public int sumOfOddIntegers (int n) {
if(n < 1);
return 0;
int totalNumber = Math.ceil(n/2);
return (totalNumber/2)*(2 + (totalNumber-1)*2);
`