Programing

“continue”키워드 란 무엇이며 Java에서 어떻게 작동합니까?

lottogame 2020. 3. 17. 08:31
반응형

“continue”키워드 란 무엇이며 Java에서 어떻게 작동합니까?


나는이 키워드를 처음 보았고 누군가가 나에게 그 기능을 설명 할 수 있는지 궁금합니다.

  • continue키워드 는 무엇입니까 ?
  • 어떻게 작동합니까?
  • 언제 사용됩니까?

continue레이블이없는 문은 조건이 가장 안쪽에서 다시 실행됩니다 while또는 do루프, 그리고 가장 안쪽의 업데이트 표현에서 for루프. 루프의 처리를 조기에 종료하여 깊게 중첩 된 if명령문 을 피하는 데 종종 사용됩니다 . 다음 예제 continue에서는 루프에서 다음 명령문을 처리하지 않고 다음 행을 가져옵니다.

while (getNext(line)) {
  if (line.isEmpty() || line.isComment())
    continue;
  // More code here
}

레이블을 사용 continue하면 가장 안쪽 루프가 아닌 해당 레이블이있는 루프에서 다시 실행됩니다. 이것은 깊게 중첩 된 루프를 피하거나 명확성을 위해 사용될 수 있습니다.

continue빈 루프 본문을 더 명확하게하기 위해 자리 표시 자로 사용되는 경우 도 있습니다.

for (count = 0; foo.moreData(); count++)
  continue;

C 및 C ++에는 레이블이없는 동일한 명령문도 있습니다. Perl의 해당 값은 next입니다.

이 유형의 제어 흐름은 권장되지 않지만, 원하는 경우 continue제한된 형식의 시뮬레이션에 사용할 수도 있습니다 goto. 다음 예제 continue에서 빈 for (;;)루프를 다시 실행합니다 .

aLoopName: for (;;) {
  // ...
  while (someCondition)
  // ...
    if (otherCondition)
      continue aLoopName;

continue같은 종류입니다 goto. 익숙 break하십니까? 대조적으로 생각하는 것이 더 쉽습니다.

  • break 루프를 종료합니다 (아래 코드로 점프).

  • continue 현재 반복에 대한 루프 내에서 코드의 나머지 처리를 종료하지만 루프는 계속합니다.


예를 보자.

int sum = 0;
for(int i = 1; i <= 100 ; i++){
    if(i % 2 == 0)
         continue;
    sum += i;
}

이것은 1에서 100 사이의 홀수 만 합산합니다.


루프 본문을 서브 루틴으로 생각하면 continue일종의입니다 return. 동일한 키워드가 C에 존재하며 동일한 목적으로 사용됩니다. 다음은 좋은 예입니다.

for(int i=0; i < 10; ++i) {
  if (i % 2 == 0) {
    continue;
  }
  System.out.println(i);
}

홀수 만 출력됩니다.


일반적으로 continue(및 break)는 특히 or 루프 선언이 즉시 보이지 않는 경우 코드에서 일부 리팩토링을 사용할 있다는 경고로 간주합니다 . 메소드 중간에서도 마찬가지 이지만 약간 다른 이유가 있습니다.whileforreturn

다른 사람들이 이미 말했듯이, continue루프의 다음 반복으로 break이동 하면서 둘러싼 루프 밖으로 이동합니다.

컨텍스트와는 달리 continue/ break와 루프 사이에 즉각적인 링크가 없기 때문에 유지 보수 시한 폭탄 일 수 있습니다 . 내부 루프를 추가하거나 루프의 "guts"를 별도의 메소드로 이동하면 continue/ break실패 의 숨겨진 효과가 있습니다.

IMHO, 최후의 수단으로 사용하는 것이 가장 좋습니다. 그런 다음 루프의 시작 또는 끝에서 사용이 밀접하게 그룹화되어 다음 개발자가 한 화면에서 루프의 "바운드"를 볼 수 있도록하십시오. .

continue, breakreturn(귀하의 메소드 끝에있는 하나의 진정한 수익 이외)는 모두 "숨겨진 GOTO"의 일반 범주에 속합니다. 루프와 함수 제어를 예기치 않은 곳에 배치하여 결국 버그를 유발합니다.


Java에서 "continue"는 현재 루프의 끝으로 이동 함을 의미합니다. 컴파일러가 루프에서 계속을 볼 경우 다음 반복으로 이동합니다.

예 : 1에서 10까지 홀수를 인쇄하는 코드입니다.

컴파일러는 다음 반복으로 계속 진행될 때마다 인쇄 코드를 무시합니다.

for (int i = 0; i < 10; i++) { 
    if (i%2 == 0) continue;    
    System.out.println(i+"");
}


이미 언급했듯이 continue아래 코드를 처리하지 않고 루프가 끝날 때까지 처리하지 않습니다. 그런 다음 루프 조건 으로 이동 하고이 조건이 계속 유지되는 경우 (또는 표시된 루프 조건에 대한 플래그가있는 경우) 다음 반복을 실행하십시오.

루프 시작이 아니라 do - whilea 다음의 맨 아래 조건으로 이동 했음을 강조해야합니다 continue.

이것이 많은 사람들이 다음 코드가 생성하는 내용에 올바르게 대답하지 못하는 이유입니다.

    Random r = new Random();
    Set<Integer> aSet= new HashSet<Integer>();
    int anInt;
    do {
        anInt = r.nextInt(10);
        if (anInt % 2 == 0)
            continue;
        System.out.println(anInt);
    } while (aSet.add(anInt));
    System.out.println(aSet);

* 응답에 aSet100 %의 홀수 만 포함 된다면 ... 잘못된 것입니다!


다른 조건 인 경우를 고려하십시오. continue 문은 조건에있는 것을 실행하고 조건을 벗어나는 것, 즉 다음 반복 또는 조건으로 점프합니다. 그러나 휴식은 루프를 떠납니다. 다음 프로그램을 고려하십시오. '

public class ContinueBreak {
    public static void main(String[] args) {
        String[] table={"aa","bb","cc","dd"};
        for(String ss:table){
            if("bb".equals(ss)){
                continue;
            }
            System.out.println(ss);
            if("cc".equals(ss)){
                break;
            }
        }
        System.out.println("Out of the loop.");
    }

}

다음과 같이 인쇄됩니다 : aa cc 루프 외부.

continue (After if.) 대신 break를 사용하면 aa를 인쇄하고 루프를 벗어납니다 .

"bb"조건이 ss와 같으면 다음을 수행하십시오. 계속 : 다음 반복으로 넘어갑니다. "cc".equals (ss). 중단의 경우 : 루프에서 나오고 "Out of the loop"를 인쇄합니다.


나는 파티에 조금 늦었지만 ...

continue루프를 제어하는 ​​조건식에서 모든 작업이 수행되는 빈 루프에 유용하다는 언급 할 가치가 있습니다. 예를 들면 다음과 같습니다.

while ((buffer[i++] = readChar()) >= 0)
    continue;

이 경우 문자를 읽고 추가하는 모든 작업은 루프를 buffer제어하는 식에서 수행됩니다 while. continue문 루프 본체를 필요로하지 않는 시각적 표시로서 기능한다.

동등한 것보다 조금 더 분명합니다.

while (...)
{ }

빈 문장을 사용하는 것보다 확실히 더 좋고 (보다 안전한) 코딩 스타일 :

while (...)
    ;

ContinueJava 키워드 이며 현재 반복을 건너 뛰는 데 사용됩니다.

1에서 100까지의 모든 홀수를 인쇄한다고 가정합니다.

public class Main {

    public static void main(String args[]) {

    //Program to print all odd numbers from 1 to 100

        for(int i=1 ; i<=100 ; i++) {
            if(i % 2 == 0) {
                continue;
            }
            System.out.println(i);
        }

    }
}

위 프로그램의 continue 문은 i 가 짝수 일 때 반복을 건너 뛰고 홀수 일 때 i 값을 인쇄합니다 .

Continue 문은 루프 내부의 나머지 명령문을 실행하지 않고 단순히 루프에서 빠져 나와 다음 반복을 트리거합니다.


기본적으로 Java에서 continue는 명령문입니다. 따라서 continue 문은 일반적으로 현재 반복을 건너 뛰기 위해 루프와 함께 사용됩니다.

Java에서 언제 어떻게 사용되는지는 아래 링크를 참조하십시오. 예를 들어 설명했습니다.

https://www.flowerbrackets.com/continue-java-example/

그것이 도움이되기를 바랍니다!


continue 루프 안에 있어야합니다 그렇지 않으면 아래 오류가 표시됩니다.

루프 밖에서 계속

참고 URL : https://stackoverflow.com/questions/389741/what-is-the-continue-keyword-and-how-does-it-work-in-java

반응형