Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.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筛定理素数数组/方法_Java_Arrays_Methods - Fatal编程技术网

Java筛定理素数数组/方法

Java筛定理素数数组/方法,java,arrays,methods,Java,Arrays,Methods,我试图只将素数从函数返回到main,但java一直告诉我创建局部变量findTime,尽管我这样做了,但我似乎无法发现问题: public static int[] primesOnly(int[] array, int N) { int primes = 0; int i = 2; while(i < array.length) { if(array[i] == 0)

我试图只将素数从函数返回到main,但java一直告诉我创建局部变量findTime,尽管我这样做了,但我似乎无法发现问题:

public static int[] primesOnly(int[] array, int N)
    {   
        int primes = 0;
        int i = 2;
        while(i < array.length)
        {
            if(array[i] == 0)
            {
                int multiple = 2*i;
                while(multiple < N)
                {
                    array[multiple] = 1;
                    multiple = multiple + i;
                }

            }
            if(array[i] == 0)
            {   
                System.out.print(i + " ");
                primes++;
            }

            i++;
        }
        while(i < array.length)
        {
            int[] justPrimes = new int[primes];
            for(int index = 0; index < primes; index++)
            {
                if(array[i] == 0)
                    justPrimes[index] = i;
            }

            i++;
        }
        return justPrimes;
    }
justPrimes是在while循环的范围内定义的。这意味着您不能在循环外引用它。只需将声明移到循环之外:

    int[] justPrimes = new int[primes];
    while(i < array.length)
    {
        for(int index = 0; index < primes; index++)
        {
            if(array[i] == 0)
                justPrimes[index] = i;
        }

        i++;
    }
    return justPrimes;
第二个注意事项是,在数据中循环两次似乎并不有效。在第一次循环中累积素数,然后在完成时复制到适当大小的int[]似乎更有意义。

将justPrimes的声明移出第二个while循环。