새소식

JAVA

자바 기초 : 반복문 (for문, while문, do-while문)

  • -

핵심내용

  • 반복문 : 제어문 블록이 실행 완료되었을 때 제어문 처음으로 돌아와 조건이 만족되는 동안 실행문을 반복해서 수행함. 이를 루핑(looping)이라고 한다. for문과 while문은 서로 변환이 가능하기에 어느쪽을 써도 무방하지만 주로 사용하는 경우가 다르다.

  • for문 : 주어진 횟수만큰 실행문을 반복할 때 주로 사용한다. 조건식이 true일때 중괄호 내부를 반복하며 반복할때마다 증감식이 실행된다.
public static void main(String[] args) {

   for(int i=1; i<=10; i++) {
      System.out.println(i);
   }
}
실행결과 : 
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
//1부터 100까지의 합 출력
//for문이 시작하기 전에 합계 변수 sum을 선언. -> for문을 끝내고 sum을 사용하기위해서.
   int sum = 0;

   for(int i=1; i<=100; i++) {
      sum += i;
   }//루프 카운터 변수는 for문을 벗어나서 사용할 수 없음.

 System.out.println("1~100까지 합 : " + sum);

실행결과 : 1~100까지 합 : 5050
public static void main(String[] args) {
/*루프 카운터 변수로 float타입은 사용할 수 없음. 0.1은 float타입으로 정확하게 표현할 수 없기 때문.
따라서 루프카운터 변수는 정수로 선언하여 사용하는 것이 좋다.*/
   for(float x=0.1f; x<=1.0f; x+=0.1f) {
     System.out.println(x);
  }
}
실행결과 : 
0.1
0.2
0.3
0.4
0.5
0.6
0.70000005
0.8000001
0.9000001
/*원래라면 이 for문을 10번을 반복해야하지만,
실제로 변수 x에 더해지는 값이 0.1보다 약간 크기 때문에 루프가 9번만 실행됨.*/

 

  • 중첩for문 : for문 안에 for문이 있는것. 아래 처럼 구구단 출력 가능
public static void main(String[] args) {
   for(int m=2; m<=9; m++) {
      System.out.println("*** " + m + "단 ***");

   for(int n=1; n<=9; n++) {
      System.out.println(m + " x " + n + " = " + (m*n));
   }
 }
}
실행결과 : 
*** 2단 ***
2 x 1 = 2
2 x 2 = 4
2 x 3 = 6
2 x 4 = 8
2 x 5 = 10
2 x 6 = 12
2 x 7 = 14
2 x 8 = 16
2 x 9 = 18
.
.
.

*** 9단 ***
9 x 1 = 9
9 x 2 = 18
9 x 3 = 27
9 x 4 = 36
9 x 5 = 45
9 x 6 = 54
9 x 7 = 63
9 x 8 = 72
9 x 9 = 81

 

  • while문 : 조건에 따라 반복할 때 주로 사용한다.조건식이 true일때 중괄호 내부를 계속 반복하며 조건식에는 주로 비교연산식이나 논리연산식이 온다.
public static void main(String[] args) {
   int i = 1;
   while(i<=10) {
      System.out.println(i);
      i++;
   }
}
실행결과 : 
1
2
3
4
5
6
7
8
9
10
public class Ex06_WhileSum1To100 {
   public static void main(String[] args) {
   int sum = 0;
   int i = 1;

   while(i<=100){
   sum = sum + i;
   i++;
  }
 System.out.println("1~" + (i-1) + " 합 : " + sum);
}
실행결과 :
1~100 합 : 5050

 

  • do-while문 : while문은 조건을 먼저 검사한 후에 실행되지만, do-while문은 실행 후 조건을 검사하므로 무조건 첫번째는 실행이 된다. 먼저 do 중괄호 내부를 실행하고 그 다음 조건식이 true가 되면 다시 중괄호 내부를 반복해서 실행한다. do-while문에서는 작성 시 while뒤에 반드시 세미콜론(;)을 붙여주어야 한다.
public static void main(String[] args) {
   int i = 20; //조건식이 false여도 초기값 한 번은 무조건 수행
   do {
      System.out.println(i);
      i++;
      }while(i<=10);
   }
실행결과 : 20

 

  • break문 : for문, while문, do-while문, switch문의 반복을 종료할 때 사용한다. 
                   for문 -> for문 안의 뒷 문장은 실행되지 않고 for문을 빠져나온다.
                   중첩 for문 -> break문이 있는 for문만 빠져나온다.
                                        바깥문 반복문에 이름:을 붙이고 break 이름;을 사용 시 바깥쪽에 있는 for문까지 빠져나온다.
public static void main(String[] args) {
//주사위를 굴려 3이 나오면 종료
   while(true) {
      int num = (int)(Math.random()*6)+1;
         System.out.println(num);
         if(num==3) {
         break;
      }
   }
    System.out.println("프로그램 종료");
}
실행결과 : 
2
3
프로그램 종료
public static void main(String[] args) {
//중첩반복문 break로 바깥문 반복문까지 종료
//반복문 이름(Outter)을 사용하지 않으면 안쪽 반복문만 종료된다.
   Outter:
   for(char name='A'; name<='Z'; name++) {
      for(char name2='a'; name<='z'; name2++) {
         System.out.println(name + "-" + name2);
         if(name2=='g') {
            break Outter;
      }
   }
}
System.out.println("프로그램 실행 종료");
}
실행결과 : 
A-a
A-b
A-c
A-d
A-e
A-f
A-g
프로그램 실행 종료

 

  • continue문 : for문, while문, do-while문 내부에서 실행되면 증감식 또는 조건식으로 돌아간다. continue문은 반복문을 종료하지 않고 계속 반복을 수행한다는 점이 break문과 다르다.
public static void main(String[] args) {
//continue문을 사용한 for문에서 1~10 사이의 짝수 출력
   for(int i=1; i<=10; i++) {
      if(i%2 !=0) {//2로 나눈 나머지가 0이 아니 경우 = 홀수
         continue;
   }
   System.out.println(i);
 }
}
실행결과 : 
2
4
6
8
10

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.