Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个程序不起作用?_Java_Loops_Debugging_If Statement_While Loop - Fatal编程技术网

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

Java 为什么这个程序不起作用?,java,loops,debugging,if-statement,while-loop,Java,Loops,Debugging,If Statement,While Loop,我想写一个程序,把1到1000之间的所有整数相加,它们可以被13、15或17整除,但不能被30整除。下面给出了我尝试的代码。我进入了一个循环,一次又一次地打印sum=0,直到永远。请帮忙 package project; public class div13n15n17not30 { int sum=0; int num=0; while(num<=1000){ if(num%13==0||num%15==0||num%17==0

我想写一个程序,把1到1000之间的所有整数相加,它们可以被13、15或17整除,但不能被30整除。下面给出了我尝试的代码。我进入了一个循环,一次又一次地打印sum=0,直到永远。请帮忙

package project;

    public class div13n15n17not30 {

    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;
        ++num;
        }
        }

        System.out.println("Sum = "+sum);   
        }

    }
    }
成套工程;
公共类分区13N15N17NOT30{
整数和=0;
int num=0;

而(num您可以使用模运算符%来确定它是否可以被该数字整除;模为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);   
}

while(num尝试以下方法:

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) {
                System.out.println("here" + num);
                sum = sum + num;
            }
        }
        ++num;

    }
    System.out.println("Sum = " + sum);

}
publicstaticvoidmain(字符串[]args){
整数和=0;
int num=0;

while(num首先,你应该把你的代码放在一个函数中。对于这个例子,一个简单的main就足够了。你犯的错误是,你试图计数到
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);

}

如果需要,您只能使用一个

 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);
    }
publicstaticvoidmain(字符串[]args){
整数和=0;

对于(int num=0;num)您的代码无法打印任何内容,因为它只出现在类中,而不是函数中。此代码不会编译。不,它没有在错误的位置,只是格式不好……我想我可以使用多个if或嵌套if。
 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);
    }