首页 > 解决方案 > while循环不遵守退出条件

问题描述

我需要编写一个代码来找到余数为的最小整数:

• 1 除以 3

• 2 除以 5

• 3 除以 7

我尝试了以下代码,但我的输出为 1。我尝试更改初始值,但它仍然只会输出初始值。

public static void main (String[] args)
{
    int i=2;

    while((i%3)!=1 && (i%5)!=2 && (i%7)!=3) {
        i++;
    }

    System.out.print(i);
}

标签: javawhile-loop

解决方案


您在while循环中的条件不正确,应该是:

while((i%3)!=1 || (i%5)!=2 || (i%7)!=3)

为什么?

您需要找到适用的第一个数字:

a%3 == 1 and a%5 == 2 and a%7 == 3

为此,您需要跳过所有数字:

not(a%3 == 1 and a%5 == 2 and a%7 == 3)

如果你应用德摩根定律,你会得到:

a%3 != 1 or a%5 != 2 or a%7 != 3

推荐阅读