坚持这个问题:
给定一个整数num,返回num的倍数之间的和1 和100。例如,如果num为20,则返回值应为 20、40、60、80和100的总和,即300。如果num不是正数, 返回0。
我已经拥有的代码(我不确定它是否正确)是:
public int sumMultiples(int num)
{
int sum = 0;
for (int val = num; val <= 100; val++)
sum = val;
return sum;
}
答案 0 :(得分:2)
首先,您不求和,而只是取最后一个值。
此外,您正在将值增加1
而不是所选数字。
换句话说,试试这个:
public int sumMultiples(int num)
{
if (num <= 0)
return 0;
int sum = 0;
for (int val = num; val <= 100; val += num)
sum += val;
return sum;
}
答案 1 :(得分:0)
一种简单的方法是询问计数器是否可以除以您的数字,如果可以,则将计数器加到总和上。 所以:
for(int i=0; i<=100; i++){
if(i%num==0){
sum = sum + i;
}
}
编辑:当然,您不必从0开始循环,从num开始更好
答案 2 :(得分:0)
尝试一下:
public int sumMultiples(int num)
{
int sum = 0;
for (int val = num; val <= 100; val += num)
sum += val;
return sum;
}
答案 3 :(得分:0)
您非常亲密。 您的循环需要以num递增,因此您需要获得倍数,并且总和需要添加到其中。您将在每个循环中覆盖总和。
alter table <table_name> enable trigger <trigger_name>;
PERFORM pg_sleep(<nrofseconds>);
alter table <table_name> disable trigger <trigger_name>;
答案 4 :(得分:0)
public int sumMultiples(int num)
{
if(num < 0)
return 0;
int sum = 0;
for (int val = num; val <= 100; val++){
if(val % num ==0 )
sum = sum + val;
}
return sum
}
答案 5 :(得分:0)
这应该工作正常。第一个if检查num
是否小于或等于0(而不是正数)。
int sum = 0;
if (num <= 0) return 0;
for (int val = num; val <= 100; val+=num) {
sum += val;
}
return sum;
答案 6 :(得分:0)
您的代码将始终返回100,因为您将{su变量su值sum
放入val
中,该变量在每个循环中增加1直到达到100。
将val
增加1也是错误的,因为必须将num
增加1。
您还忘记检查num < 0
。
我建议在这里使用一会儿,可读性更高的恕我直言:
public int sumMultiples(int num){
if(num < 0) return 0;
int result = 0;
int loop = num;
while (loop <= 100){
result += loop;
loop += num;
}
return result;
}
答案 7 :(得分:0)
数字必须为正数-为此,您需要一个if语句,该数字应大于0。 您需要更改倍数总和的代码。该代码应类似于:
if(num >0) //you may want to add && num <=100
{
int sum = 0;
for (int val = num; val <= 100; val+=num)
{
sum += val; //for your example iteration 1 = 20, 2 = (20+40=60), 3 = (60+60 = 120), 4 = (120+80 = 200), 5 = (200+100=300)
}
return sum;
}
else
{
Console.WriteLine("Number has to be greater than 0");
return 0;
}