Continue语句有效但break语句不能正常工作

时间:2014-06-16 11:13:26

标签: java

我正在编写代码以使用Java中的嵌套循环生成素数,并且在朋友的帮助下我创建了一个成功生成素数的程序。

在这段代码中,我的朋友建议我使用continue label语句将控件转移到外部循环并且它可以工作。但是,当我用continue替换break语句时,它并没有给我答案。任何人都可以解释这种行为背后的错误或原因是什么?

代码是:

import java.io.*;
class Prime
{    
    public static void main(String x[]) throws Exception
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        outer:  for (int i = 2; i<=n;i++)
            {
                for(int j = 2; j<i;j++)
                {
                    if(i%j==0)
                    {   
                        continue outer;
                    }

                }
                System.out.println("Prime Number " + i);
            }
    }
}

3 个答案:

答案 0 :(得分:1)

情况如下(查看评论以了解会发生什么):

outer:  for (int i = 2; i<=n;i++)
    {
        for(int j = 2; j<i;j++)
        {
            if(i%j==0)
            {   
                continue outer; // skip the rest of outers loop and go to its start
            }
        }
        System.out.println("Prime Number " + i); //this will not get run 
                                                 //when the continue statement is hit
    }

休息:

outer:  for (int i = 2; i<=n;i++)
    {
        for(int j = 2; j<i;j++)
        {
            if(i%j==0)
            {   
                break; // stop running the inner loop
            }
        }
        System.out.println("Prime Number " + i); //this still gets run regardless of break
    }

答案 1 :(得分:0)

问题并非100%明确,当你说replace continue statement with break这意味着你的线路来自:

if(i%j==0)
{   
    continue outer;
}

要:

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

因为如果是这样,你已经指示程序到break外部循环,因此两个循环的执行都将停止

答案 2 :(得分:0)

continue重新开始;

for(int i=0;i<5;i++){ 
continue; // restart iteration with next value in index i=1;
}

break在循环后执行代码

for(int i=0;i<5;i++)) { 
break; // execute from  from next line
}

//下一行