Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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_Loops_For Loop_Break - Fatal编程技术网

Java 在一次正确的迭代后停止内部循环

Java 在一次正确的迭代后停止内部循环,java,loops,for-loop,break,Java,Loops,For Loop,Break,代码中的问题在于哥德巴赫方法。我想在最内部的循环找到一对数字后停止内部两个循环的迭代,但我不知道如何仅退出这两个循环。换句话说,我只想在最外层的for循环创建的每I个整数中找到一对,然后转到下一个整数I 下面是我的代码: import java.util.Arrays; import java.awt.List; import java.util.ArrayList; // finding prime numbers using sieve of Eratosthenes and golbac

代码中的问题在于哥德巴赫方法。我想在最内部的循环找到一对数字后停止内部两个循环的迭代,但我不知道如何仅退出这两个循环。换句话说,我只想在最外层的for循环创建的每I个整数中找到一对,然后转到下一个整数I

下面是我的代码:

import java.util.Arrays;
import java.awt.List;
import java.util.ArrayList;

// finding prime numbers using sieve of Eratosthenes and golbach's conjecture
public class Test {
    public static void main(String[] args) {

        int[] num = new int[1000000];

        for (int i = 2; i <= num.length; i++) {
            num[i - 1] = i;
        }
        Test.sieve(num);


        Test.goldbach(num);
    }
    public static void sieve(int[] array) {

        for (int i = 2; i < Math.sqrt(array.length); i++) {
            if (array[i - 1] == 0) {
                continue;
            }
            for (int j = 2 * i; j <= array.length; j += i) {
                array[j - 1] = 0;
            }
        }

        for (int i = 0; i < array.length; i++) {
            if (array[i] != 0) {
                //System.out.print(array[i] + " ");
            }
        }
        //System.out.println(Arrays.toString(array));
    }


    public static void goldbach(int[] array) {
        for (int i = 2; i <= 1000000; i += 2) { //to go through every even integer
            for (int j = 0; j <= i; j++) {
                for (int k = 0; k <= i; k++) {
                    System.out.println("two prime numbers that add to " + i + " are " + array[j] + " and " + array[k]);
                    break;
                }
            }
        }
    }
}
}
导入java.util.array;
导入java.awt.List;
导入java.util.ArrayList;
//用Eratosthenes筛和golbach猜想求素数
公开课考试{
公共静态void main(字符串[]args){
int[]num=新int[1000000];

对于(inti=2;i,您可以在第二个循环中设置j的值

for (int i = 2; i <= 1000000; i += 2) { //to go through every even integer
    for (int j = 0; j <= i; j++) { 
        for (int k = 0; k <= i; k++) {
                System.out.println("two prime numbers that add to " + i + " are " + array[j] + " and "  + array[k]);
                j = i + 1; // This will end the outer loop as well.
                break;
            }
        }
    }
}
for(int i=2;i使用标签中断(或继续)内部循环以外的循环:

    found:
    for (int j = 0; j <= i; j++) { 
        for (int k = 0; k <= i; k++) {
                System.out.println("two prime numbers that add to " + i + " are " + array[j] + " and "  + array[k]);
                break found;
            }
        }
    }
找到:

对于(int j=0;j)是否在
k
循环内没有
if
条件?这根本不起作用…对于每个
i
i,每个
j
只会得到k=0值
public static void goldbach(int[] array) {
    for (int i = 2; i <= 1000000; i += 2) { //to go through every even integer
        primeAdd(i);
    }
}

private static void primeAdd(int i) {
    for (int j = 0; j <= i; j++) { 
        for (int k = 0; k <= i; k++) {
            System.out.println("two prime numbers that add to " + i + " are " + array[j] + " and "  + array[k]);
            return;
        }
    }
}