1. 우리 삶의 고리

매우 자주 우리의 삶은 우리가 같은 행동을 여러 번 수행하도록 요구합니다. 예를 들어 많은 페이지로 구성된 문서를 스캔해야 한다고 가정합니다. 동일한 절차를 반복해서 반복합니다.

  • 스캐너에 첫 페이지 넣기
  • 스캔 버튼을 누르세요
  • 스캐너에 다음 페이지 넣기

이것은 수동으로 수행하기 어렵습니다. 이 프로세스가 어떻게든 자동화될 수 있다면 좋을 것입니다.

또는 다른 예를 고려하십시오. 받은 편지함에서 읽지 않은 모든 이메일을 스팸으로 표시하고 싶다고 가정해 보겠습니다. 옛날 옛적에 각 이메일을 한 번에 하나씩 선택하고 스팸으로 표시해야 했습니다.

그러나 프로그래머는 게으르기 때문에 오래 전에 이 프로세스를 자동화했습니다. 이제 문자 목록을 선택하고 "스팸으로 표시"를 클릭하면 이메일 클라이언트가 목록을 통해 각 이메일을 스팸 폴더로 이동합니다.

여기서 무엇을 말할 수 있습니까? 컴퓨터나 프로그램이 한 번의 클릭으로 수백 또는 수천 개의 단조로운 작업을 실행할 수 있을 때 매우 편리합니다. 이제 이 작업을 수행하는 방법도 배우게 됩니다.


2. while루프

if-else 문은 프로그래밍 기능을 크게 확장하여 다양한 상황에서 다양한 작업을 수행하는 프로그램을 작성할 수 있게 했습니다. 그러나 우리 프로그램을 훨씬 더 강력하게 만드는 또 하나의 요소가 있습니다. 바로 루프입니다 .

Java 에는 while, for및 의 4가지 종류의 루프가 있습니다 . 이제 그 중 첫 번째를 파헤쳐 보겠습니다.for-eachdo-while

루프 while는 매우 간단합니다. 조건루프 본문 의 두 부분으로만 구성됩니다 . 루프 본문은 조건이 인 한 반복해서 실행됩니다 true. 일반적으로 while루프는 다음과 같습니다.

while (condition)
   statement;
while단일 명령문이 있는 루프 에 대한 표기법
while (condition)
{
   block of statements
}
while명령문 블록이 있는 루프 에 대한 표기법

매우 간단합니다. 문 또는 문 블록은 루프 조건 이 같을 때까지 반복해서 실행됩니다 .true

작동 방식은 다음과 같습니다. 먼저 조건을 확인합니다. 참이면 루프 본문이 실행됩니다( 또는 문 블록 ). 그런 다음 조건이 다시 확인되고 루프 본문이 다시 실행됩니다. 조건 이 거짓이 될 때까지 계속합니다 .

조건이 항상 true 이면 프로그램 실행이 중지되지 않습니다. 루프에 영구적으로 고정됩니다.

맨 처음 확인했을 때 조건이 거짓 이면 루프 본문이 한 번도 실행되지 않습니다.


3. 루프의 예

다음은 실행 중인 루프의 몇 가지 실용적인 예입니다.

암호 설명
int n = 5;
while (n > 0)
{
   System.out.println(n);
   n--;
}
화면에 5줄이 표시됩니다.
5
4
3
2
1
암호 설명
int  n = 0;
while (n < 10)
{
   System.out.println(n);
   n++;
}
화면에 10줄이 표시됩니다.
0
1
...
8
9
암호 설명
Scanner console = new Scanner(System.in);
while(console.hasNextInt())
{
   int x = console.nextInt();
} 
프로그램은 숫자가 입력되는 한 키보드에서 숫자를 읽습니다.
암호 설명
while (true)
   System.out.println("C");
프로그램은 화면에 문자를 끝없이 인쇄합니다.C
암호 설명
Scanner console = new Scanner(System.in);
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
프로그램은 키보드에서 줄을 읽습니다.

exit들어갈 때 까지 .

앞의 예에서 equals()메서드는 문자열을 비교하는 데 사용됩니다. 문자열이 같으면 함수는 를 반환합니다 true. 문자열이 같지 않으면 를 반환합니다 false.



4. 루프 내 루프

조건문에 대해 배우면서 조건문을 여러 조건문을 결합하여 복잡한 논리를 구현하는 데 사용할 수 있음을 확인했습니다. 즉, 문 if안에 문을 사용하는 것입니다 if.

루프를 사용하여 동일한 작업을 수행할 수 있습니다. 루프 안에 루프를 작성하려면 첫 번째 루프의 본문 안에 두 번째 루프를 작성해야 합니다. 다음과 같이 표시됩니다.

while (condition for outer loop)
{
   while (condition for inner loop)
   {
     block of statements
   }
}
while다른 루프 내부 의 루프( 문 블록 포함 )while

세 가지 작업을 살펴보겠습니다.

작업 1 . Mom화면에 단어를 4번 표시하는 프로그램을 작성하고 싶다고 가정해 보겠습니다 . 루프는 정확히 우리에게 필요한 것입니다. 그리고 우리의 코드는 다음과 같을 것입니다:

암호 설명
int  n = 0;
while (n < 4)
{
   System.out.println("Mom");
   n++;
}
화면에 4줄이 표시됩니다.
Mom
Mom
Mom
Mom

작업 2 . A한 줄에 5개의 문자 s를 표시하는 프로그램을 작성하려고 합니다 . 이를 위해서는 다시 한 번 루프가 필요합니다. 코드는 다음과 같습니다.

암호 설명
int n = 0;
while (n < 5)
{
   System.out.print("A");
   n++;
}
대신 를 println()사용하겠습니다 print(). 그렇지 않으면 각 문자가 A 별도의 줄에 표시됩니다.

화면 출력은 다음과 같습니다.
AAAAA

작업 3 . 문자 s로 구성된 사각형을 표시하려고 합니다 A. 직사각형은 4행 5열로 구성되어야 합니다. 이를 달성하려면 이제 중첩 루프가 필요합니다. 우리는 단순히 첫 번째 예(4줄을 출력하는 예)를 취하고 한 줄을 출력하는 코드를 두 번째 예의 코드로 대체합니다.

암호 설명
int n = 0;

while (n < 4) { int m = 0;
while (m < 5) { System.out.print("A"); m++; }
System.out.println(); n++; }
 
외부 루프는 보라색입니다. 변수를 사용하여 n루프 반복 횟수를 계산합니다.

내부 루프는 녹색입니다. 변수를 사용하여 m루프 반복 횟수를 계산합니다. 내부 루프가 완료된 후 커서를 명시적으로 다음 줄로 이동

해야 합니다 . 그렇지 않으면 프로그램이 인쇄하는 모든 문자가 한 줄에 표시됩니다. 화면 출력은 다음과 같습니다.


AAAAA
AAAAA
AAAAA
AAAAA

외부 루프와 내부 루프는 서로 다른 변수를 사용하여 루프 반복 횟수를 계산해야 합니다. System.out.println()또한 내부 루프 뒤에 명령을 추가해야 했습니다 . 해당 루프는 A같은 줄에 문자 s를 표시하기 때문입니다. 한 줄의 문자가 표시되면 누군가 커서를 새 줄로 이동해야 합니다.



5. Java와 Pascal 루프 비교

많은 분들이 고등학교에서 파스칼을 공부했습니다. 여기서 자료를 더 쉽게 이해할 수 있도록 Pascal과 Java로 작성된 루프 비교를 살펴보십시오 while. Pascal을 모른다면 이 부분을 건너뛰십시오.

파스칼 자바
i := 3;
While i >= 0 Do
   Begin
      WriteLn(i);
      i := i - 1;
   End;
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
i := 0;
While i < 3 Do
   Begin
      WriteLn(i);
      i := i + 1;
   End;
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
IsExit := False;
While Not isExit Do
   Begin
      ReadLn(s);
      isExit :=  (s = 'exit');
   End;
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
While True Do
   WriteLn('C');
while (true)
   System.out.println("C");
While True Do
   Begin
     ReadLn(s);
     If s = 'exit' Then
       Break;
   End;
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
     break;
}