我正在尝试编写一个程序来汇总1到1000之间的所有整数,它们可以被13,15或17整除,但不能被30整除。我尝试的代码如下所示。我进入一个循环,一次又一次地打印sum = 0。请帮忙!
activate(instruction: ComponentInstruction) {
if (this.userService.isLoggIn()) {
if (this.userService.isAdmin()) {
return super.activate(instruction);
} else if (this._canActivate(instruction.urlPath, isAdmin) {
return super.activate(instruction);
} else {
this.router.navigate(['Forbidden']);
}
} else {
this.router.navigate(['Login']);
}
}
_canActivate(url, admin) {
return this.publicRoutes.indexOf(url) !== -1
|| this.userService.isLoggedIn();
}
答案 0 :(得分:1)
您可以使用模数运算符%来确定它是否可以被该数字整除;模数为0意味着它可以完全整除。所以你可以这样做:
while(num<=1000) {
if(num%13==0||num%15==0||num%17==0 ){
if(num%30!=0){
sum=sum+num;
}
}
num++;
System.out.println("Sum = "+sum);
}
答案 1 :(得分:0)
尝试这样的事情:
inObj
答案 2 :(得分:0)
首先你应该把你的代码放在一个函数中。对于这个例子,一个简单的主要就足够了。你做错了,你试过计算直到1000
,但只有在你增加总和时才增加你的计数器值。
你应该在每次迭代后都这样做
public static void main(String[] args) {
int sum = 0;
int num = 0;
while (num <= 1000) {
if (num % 13 == 0 || num % 15 == 0 || num % 17 == 0) {
if (num % 30 != 0) {
sum = sum + num;
}
}
// increase num here.
++num;
}
System.out.println("Sum = " + sum);
}
但如果您使用for
代替while
循环,我会看起来更平滑。
for
循环在这里更合适。
public static void main(String[] args) {
int sum = 0;
for(int num = 0;num <= 1000;++num) {
if (num % 13 == 0 || num % 15 == 0 || num % 17 == 0) {
if (num % 30 != 0) {
sum = sum + num;
}
}
}
System.out.println("Sum = " + sum);
}
答案 3 :(得分:0)
如果
,您只能使用一个 public static void main(String[] args) {
int sum = 0;
for(int num = 0;num <= 1000;++num) {
if ((num % 13 == 0 || num % 15 == 0 || num % 17 == 0)&& (num % 30 != 0)) {
sum = sum + num;
}
}
System.out.println("Sum = " + sum);
}