1. break진술

이전 수업의 예를 살펴보겠습니다.

암호 설명
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
프로그램은 를 입력할 때까지 키보드에서 한 줄을 읽습니다 "exit".

프로그램은 단어가 입력될 때까지 콘솔에서 줄을 읽습니다 exit. 이 단어를 입력하면 isExit 변수가 true, 루프 조건이 가 되고 루프가 종료됩니다."!isExitfalse

breakJava에는 이러한 논리를 단순화할 수 있는 특수 문이 있습니다 . break문이 루프 내에서 실행되면 루프가 즉시 종료됩니다 . 프로그램은 루프를 따르는 명령문을 실행하기 시작합니다. 진술은 매우 간단합니다.

break;

break방금 설명한 예제를 다시 작성하기 위해 명령문을 사용하는 방법은 다음과 같습니다 .

암호 설명
Scanner console = new Scanner(System.in);
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}
프로그램은 를 입력할 때까지 키보드에서 한 줄을 읽습니다 "exit".


2. 계속 진술

그러나 break루프의 동작을 제어할 수 있는 유일한 Java 문은 아닙니다. Java에도 이러한 진술이 있습니다 continue. continue루프 내에서 명령문을 실행하면 루프의 현재 반복이 일정보다 빨리 종료됩니다.

루프 본문을 한 번 실행하는 것을 루프 반복이라고 합니다. 이 continue명령문은 루프의 현재 반복을 중단하지만 break명령문과 달리 루프 자체를 종료하지는 않습니다. 진술도 간단합니다.

continue;

continue명령문은 특정 상황에서 루프 본문의 실행을 '건너뛰고' 싶을 때 루프에서 매우 편리합니다.

1작업: 에서 까지 의 숫자를 인쇄하고 20로 나누어지는 숫자는 건너뛰는 프로그램을 작성하고 싶습니다 7. 이것이 이 코드의 모습입니다.

암호 설명
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
     continue;
   System.out.println(i);
   i++;
}
프로그램은 에서 1까지 의 숫자를 표시합니다 20. 숫자를 로 나눌 수 있는 경우 ( 나누기 7의 나머지는 ) 숫자 표시를 건너뜁니다.70

사실, 이 코드는 작동하지 않을i 것 입니다 7. 결국 이 명령문은 두 개의 continue다른 명령문을 건너뜁니다 System.out.println(i). i++결과적으로 값에 도달하면 7변수 i변경이 중지되고 무한 루프에 빠지게 됩니다.

우리는 이 매우 흔한 실수를 설명하기 위해 일부러 이런 방식으로 코드를 작성했습니다. 어떻게 고칠 수 있습니까?

여기에는 두 가지 옵션이 있습니다.

옵션 1:i 실행하기 전에 변경 continue하지만 이후에 변경i % 7

옵션 2:i 루프 시작 시 항상 증가합니다 . 그러나 then i의 시작 값은 이어야 합니다 0.

옵션 1 옵션 2
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0 )
   {
     i++;
     continue;
   }
   
   System.out.println(i);
   i++;
}
int i = 0;
while (i < 20)
{
   i++;
   if ( (i % 7) == 0)
     continue;
   System.out.println(i);
}