我正在编写代码以使用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);
}
}
}
答案 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
}
//下一行