除数范围(Java)

除数范围(Java),java,Java,我不太清楚我在这里遇到了什么问题,我希望有人能帮助我。这是我关于堆栈溢出的第一篇文章,我对编程比较陌生,所以我希望我不会冒犯这里的任何人 这里有一个提示(是的,这是一个项目Euler问题,请不要给出答案):1到20之间的每个数字可以整除的最小数字是多少 以下是我编写的代码: int target = 21; int divisor; boolean success = false; while (!success) { for (divis

我不太清楚我在这里遇到了什么问题,我希望有人能帮助我。这是我关于堆栈溢出的第一篇文章,我对编程比较陌生,所以我希望我不会冒犯这里的任何人

这里有一个提示(是的,这是一个项目Euler问题,请不要给出答案):1到20之间的每个数字可以整除的最小数字是多少

以下是我编写的代码:

    int target = 21;
    int divisor;
    boolean success = false;
    while (!success)
    {
        for (divisor = 1; divisor < 21; divisor++)
        {
            if (target % divisor != 0)
            {
                break;
            }
            else
            {
                if (divisor == 20)
                {
                    success = true;
                }
            }
        target++;
        }

    }

    System.out.println(target);
int目标=21;
整数除数;
布尔成功=假;
而(!成功)
{
for(除数=1;除数<21;除数++)
{
如果(目标%除数!=0)
{
打破
}
其他的
{
如果(除数=20)
{
成功=真实;
}
}
目标++;
}
}
系统输出打印项次(目标);
我得到的答案(232792581)被p.E.标记为不正确。有人能告诉我我这里错了什么吗


谢谢大家

您的问题是
target++
放错了位置。按照现在的代码方式,这是在
for
循环中调用的,在该循环中,您可以测试数字,也就是说,您可以在检查目标的同时更改目标。移动
target++
语句,使其脱离
for
循环,但仍在
while
循环中。

好吧,这个数字显然不能被二整除。也许可以把你的问题简化成你可以手工做的事情(比如第一个数字可以被5整除),看看你的算法哪里出了问题。提示:即使你找到了正确的答案,你也会做一些事情。如果(除数==20){success=true;}block,你想做什么,我注意到答案显然是错的,但我的问题更多的是问题的过程部分。我的过程在哪里?我要崩溃了吗?编辑:不,我知道你说我在“成功”之后做错了什么(答案中仍然添加了一个),但是给出的答案减去一也不正确。我会纠正这个错误,但它对我没有帮助…@pm77-1:我试图实现适当的循环中断,以便程序能够给出正确的答案。我仍然需要添加另一个(如果成功){break;}来中断for循环;整数除数;布尔成功=假;while(!success){target++;for(divisior=1;divisior<21;divisior++){//System.out.println(target);if(target%divisior!=0){break;}else{if(divisior==20){success=true;}}}}}System.out.println(target);这仍然不能给出正确的答案。看来(截至本次编辑时,我的收入已达100亿)这一结果没有答案。还有什么吗?我编译并运行了完全相同的代码,它运行得很好。我不知道。我想是的。