2014-06-16 5 views
-3

Java에서 중첩 루프를 사용하여 소수를 생성하는 코드를 작성했고 친구의 도움으로 소수를 성공적으로 생성하는 프로그램을 만들었습니다.Continue 문은 작동하지만 break 문이 제대로 작동하지 않습니다.

이 코드에서 내 친구는 continue label 문을 사용하여 컨트롤을 바깥 쪽 루프로 전송하고 작동하는 것이 좋습니다. 그러나 break으로 continue 문을 바꿀 때 답을주지 못합니다. 누구든지 실수 또는이 문제의 원인은 무엇인지 설명해 주시겠습니까?

코드는 다음과 같습니다

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

[해당 경우 중단과 계속 사이의 기본적인 차이점을 이해해야합니다.] (http://stackoverflow.com/q/462373/2024761). – SudoRahul

답변

1

상황 (무슨 일이 일어날 지에 대한 설명 주석을 확인)입니다 //

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

:

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 
    } 
0

그것은 문제에서 100 % 분명, 당신은 replace continue statement with break가 당신의 선에서 갔다 의미합니까 말할 때 :

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

사람 :

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

그래서 만약 당신이 프로그램을 지시했다 break 외부 루프 및 따라서 execu 두 루프의 작동이 중지됩니다.

+0

아니요 (i % j == 0) {break;} – user3247825

+0

@user3247825, 아니요, 그 경우에는 프로그램이 내부 루프의 실행을 중단하도록 명령 했으므로'System.out.println ("Prime Number" + i);''outer' 루프의 다음 반복을 실행하기 전에. 'continue outer; '를 사용하면 프로그램이'System.out.println ("Prime Number"+ i) 행의 실행을 건너 뛰는 외부 루프의 최상위로 건너 뛰도록 지시했다; – RossBille

+0

도움을 주셔서 감사합니다 경. 코드의 동작을 이해하는 데 정말로 도움이됩니다. – user3247825

0

continue 다시 시작하십시오.

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

break 루프 후 코드를 실행 다음 줄로 여기

관련 문제