Java 输出未显示

Java 输出未显示,java,conditional-breakpoint,Java,Conditional Breakpoint,我正在编写一个简单的java程序来寻找最小的数字,它可以被1到20之间的所有数字整除 我编写了以下代码: package smallmultiple; public class SmallMultiple { public static void main(String[] args) { int sml = 0; outerloop: for (int i = 40; i < 100000; i++) {

我正在编写一个简单的java程序来寻找最小的数字,它可以被1到20之间的所有数字整除

我编写了以下代码:

package smallmultiple;
public class SmallMultiple { 
    public static void main(String[] args) {
        int sml = 0;
        outerloop:
        for (int i = 40; i < 100000; i++) {
            int j=1;
            do {
                if(i%j==0)
                    j++;                
            } while(j<21);

            if(j==20) {
                sml=i;
                break outerloop;
            } 
        }

        System.out.println(sml);
    }
}
package-smallmultiple;
公共类{
公共静态void main(字符串[]args){
int sml=0;
外部环路:
对于(int i=40;i<100000;i++){
int j=1;
做{
如果(i%j==0)
j++;

}而(j您可以尝试这个比您的解决方案快一点的方法:-

for(int i = 190; ; i += 190) {
        if(i % 3 == 0 
                && i % 4 == 0
                && i % 6 == 0 
                && i % 7 == 0
                && i % 8 == 0 
                && i % 9 == 0
                && i % 11 == 0
                && i % 12 == 0 
                && i % 13 == 0 
                && i % 14 == 0 
                && i % 15 == 0
                && i % 16 == 0
                && i % 17 == 0
                && i % 18 == 0
                && i % 20 == 0) {
            System.out.println(i);
            break;
        }
    }

你也可以看看这个。

只有当
i
完全可以被
j
整除时,你才增加
j
。难道你不应该中断或退出
do大概是

if(i%j==0) {
   j++;
}
else {
  break;
}  

它很简单。让我解释一下你的循环。首先,
i=40
j=1
,没问题。然后
j++
。接下来
i=40
j=2
,仍然正确。然后
j++
再次。现在
i=40
j=3
i%j!=0
e、 
j=3
仍然满足您的循环
(j<21)
然后它将永远循环。这就是您无法获得任何输出的原因。您可以使用IDE调试来发现此错误。对不起,我的英语不好。

在java中,为了尊重面向对象的最佳实践,不建议用户标签,请尝试以下方法:

public class NumberTool {

    public static void main(String[] args) {
        System.out.println("Smallest number is : " + getSmallestNumberDividedByOneToTwnety());
    }

    public static int getSmallestNumberDividedByOneToTwnety() {

        for ( int i = 40; i <= 2147483647; i++) {

            if (isNumberDivdedByOneToTwenty(i)) {
                return i;
            }

        }

        return 0;
    }

    public static boolean isNumberDivdedByOneToTwenty(int numberToTest) {

        for (int i = 1; i <= 20; i++) {
            if (numberToTest % i != 0) {
                return false;
            }
        }

        return true;

    }

}
public class NumberTool{
公共静态void main(字符串[]args){
System.out.println(“最小的数字是:“+GetSmallestNumberDividedByOneToTwnity());
}
公共静态int GetSmallestNumberDividedByOneToToTownity(){

对于(inti=40;我能告诉我这里的'outerloop'是什么吗?它是变量还是其他什么?