Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 如何计算while循环运行了多少次?_Java - Fatal编程技术网

Java 如何计算while循环运行了多少次?

Java 如何计算while循环运行了多少次?,java,Java,我需要编写一个程序,使用do while循环,在新行上打印25个素数。我已经弄明白了一切,除了打印出25个数字。然而,这个程序只给我25的素数,而不是25的素数 我设置了一个变量count,使其在每次循环运行时都增加,结果相同。这是我的代码很抱歉这么长,我会缩短它,但我担心整个事情可能会搞砸: int firstNum; int secondNum = 1; int num; int count = 0; System.o

我需要编写一个程序,使用do while循环,在新行上打印25个素数。我已经弄明白了一切,除了打印出25个数字。然而,这个程序只给我25的素数,而不是25的素数

我设置了一个变量count,使其在每次循环运行时都增加,结果相同。这是我的代码很抱歉这么长,我会缩短它,但我担心整个事情可能会搞砸:

        int firstNum;
        int secondNum = 1;
        int num;
        int count = 0;

    System.out.println("Sample run: \n\nPrime numbers");
        do {
            num = 0;
            firstNum = 2;
            while (firstNum <= secondNum / 2) {
                if (secondNum % firstNum == 0) {
                    num++;
                    count++;
                    break;
                }
                firstNum++;
            }
            if (num == 0 && secondNum != 1) {
                count++;
                System.out.print("\n" + secondNum + " ");
            }
            secondNum++;
        } while(count < 25);
    }
}

下面是一个示例,演示如何在某个循环中迭代固定次数,然后分别计算下一个素数。这里我显然没有计算任何素数,只是展示了如何分离循环数量的两个关注点,并确定下一个素数

public static void main(String[] args) {
    int prime = 0;
    for (int k = 1; k <= 25; k++) {
        prime = findPrimeAfter(prime);
        System.out.println("#" + k + ": " + prime);
    }
}

private static int findPrimeAfter(int lastPrime) {
    // TODO: find the next prime that is greater than "lastPrime"
    return 0;
}
您需要删除count++;在第一个if块中,得到25个素数

更新代码:


1使用for循环代替while循环;2仅在需要时声明变量,而不是在开始时声明。您的程序将在数量级上更易于理解。
    int firstNum;
    int secondNum = 1;
    int num;
    int count = 0;

    System.out.println("Sample run: \n\nPrime numbers");
    do {
        num = 0;
        firstNum = 2;
        while (firstNum <= secondNum / 2) {
            if (secondNum % firstNum == 0) {
                num++;
                // count++; // <--- Remove this.
                break;
            }
            firstNum++;
        }
        if (num == 0 && secondNum != 1) {
            count++;
            System.out.println(secondNum); // Use println() for new line.
        }
        secondNum++;
    } while(count < 25);
}