为什么这个程序不起作用?

时间:2016-05-06 06:43:11

标签: java loops debugging if-statement while-loop

我正在尝试编写一个程序来汇总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();
}

4 个答案:

答案 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);
    }