Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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代码有什么问题?项目12_Java - Fatal编程技术网

什么';我的java代码有什么问题?项目12

什么';我的java代码有什么问题?项目12,java,Java,我用Java为Project Euler()编写代码。我对Java编码还比较陌生,所以我只讨论了问题12,它要求您找到包含500多个因子的最小三角形数(例如,1+2+3+4+5)。我为此编写了代码,但出于某种原因,我的代码一直挂起: int factors = 0; long triangle = 0L; for(int x = 1; factors <= 500; x++){ triangle += x; for(int y

我用Java为Project Euler()编写代码。我对Java编码还比较陌生,所以我只讨论了问题12,它要求您找到包含500多个因子的最小三角形数(例如,1+2+3+4+5)。我为此编写了代码,但出于某种原因,我的代码一直挂起:

        int factors = 0;
    long triangle = 0L;
    for(int x = 1; factors <= 500; x++){
        triangle += x;
        for(int y = 1; y<=triangle; y++){
            if(triangle%y==0){
                factors = factors + 1;
            }
        }
        if(factors > 500){
            System.out.println(triangle);
        }
        else{
            factors = 0;
        }
    }
int因子=0;
长三角=0L;

对于(intx=1;factors,您的程序实际上并没有挂起;它只是非常低效

因为这是一个项目Euler问题,我不会直接给你一个更优化的解决方案

for(int y = 1; y<=triangle; y++){
    if(triangle%y==0){
        factors = factors + 1;
    }
}

用于(int y=1;y因为我假设它是一个非常大的数字。另外,要在
triangle+=x
中添加到它自己,它首先必须等于某个值。您是否尝试过使用调试器来查看因子的值,三角形如何随x的每次迭代而变化?它没有挂起;它只是效率很低。要解决这个问题,y“你将不得不尝试一种不同的方法。”丹尼斯曼说,“那将是一种挑战。”answer@eis好的,我会发布一个更详细的答案。