JAVA 공부 (DAY 5)

hmLee·2021년 11월 21일
0

자바 기초

목록 보기
4/6

for문, while문, do-while문이 포스팅이 나뉘어져 Day4에 작성한 반복문 for문 부분을 그대로 복사해왔다.

  • 반복문 정리
    • for문 : 자체적으로 초기식, 조건식, 증감식을 모두 포함하고 있는 반복문으로 간결하게 표현할 수 있다.
    • while문 : 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다. 루프에 진입하기 전에 먼저 조건식부터 검사한다.
    • do-while문 : 먼저 루프를 한 번 실행한 후에 조건식을 검사한다. 즉, 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.

반복문 for문

  • 초기값, 조건식, 증감식을 모두 가지고 있는 반복문
//사용방법
for(초기값; 조건식; 증감식) {
    조건이 참일 때 반복실행할 문장1;
    조건이 참일 때 반복실행할 문장2;
    :
}

//예시
for (int i = 1 ; i <= 5 ; i += 1){
    System.out.print("*");
}
//결과값
//*****
  • i는 루프제어변수이다. 루프제어변수를 1로 두면 몇 번 반복하는지 보기 쉽다.
  • 초기값과 증감식은 여러개 둘 수 있다.
  • 읽는 순서
    초기값 > 조건식 (=true) > 반복실행문장 > 증감식 > 조건식 (=true) > 반복실행문장 > 증감
    식 > ... > 조건식 (=false) > 반복문 종료
//1~10까지 정수의 합 구하기

int sum = 0;
for (int i = 1; i <= 10 ; i += 1) {
    sum += i ;
}

System.out.println("1~10까지 정수의 합 = " + sum);
//1~10까지 정수의 합 = 55
  • for(;;) 는 무한루프이므로 쓰지말자!

반복문 do-while문

do {
    조건식이 참일 경우 실행할 문장1;
    조건식이 참일 경우 실행할 문장2;
    :
} while (조건식);
  • 먼저 루프를 한 번 실행한 후에 조건식을 검사한다. 즉, 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다.
  • 무조건 한 번은 루프를 실행하기 때문에 실무에서 유효성 검사에 많이 사용하며 보통 반복실행문장을 2개 이상 쓴다.
  • cf) while문은 조건이 거짓이면 아예 실행하지 않는다.
  • 조건식에 변수가 필요할 때는 반복문 밖에서 선언해야 한다.
//잘못된 변수 선언 위치 예시

do {
    int score = scan.nextInt();
    조건식이 참일 경우 실행할 문장1;
    조건식이 참일 경우 실행할 문장2;
    :
} while (score < 60); //socre 변수는 루프 내에서 이미 반납되어 사용 불가능

※ 루프 내부에서 선언하면 루프가 끝날 때 변수가 반납되므로 조건식에서는 사용할 수 없어진다.

//입력한 숫자가 짝수인지 확인하기
//+홀수이면서 틀린 횟수가 0번일 때 기회를 더 줌

Scanner scan = new Scanner(System.in);

int num;
int cnt = 0;
do {
    System.out.println("짝수를 입력하세요: ");
    num = scan.nextInt();
    if (num % 2 == 1 && cnt == 0) {
        System.out.println("딱 한 번만 봐줄게");
        num = 0;
    };
    cnt += 1;
    System.out.println(cnt + "번째 시도");
} while (num % 2 == 0);
System.out.println("홀수를 입력했으므로 프로그램이 종료됩니다.");	

반복문 while문

  • 특정 조건을 만족할 때까지 계속해서 주어진 명령문을 반복 실행한다.
  • 루프에 진입하기 전에 먼저 조건식부터 검사한다.
  • 보통은 for문은 사용하고, 부득이한 경우에만 while문을 쓴다.
  • ex) if문을 반복문 안에 넣고 싶을 때 (for문 안에는 넣기 곤란), 증감의 정도나 초기값이 일정하지 않을 때 (경우에 따라 증감이 +2 or -7, 경우에 따라 초기값이 8 or 1 등등)
//두 개의 정수를 입력받아
//두 정수 사이의 숫자의 합 구하기

import java.util.Scanner;
:

Scanner scan = new Scanner(System.in);

System.out.println("Enter the first number : ");
int startNum = scan.nextInt();
System.out.println("Enter the second number : ");
int endNum = scan.nextInt();

int sum = 0;
int i = startNum; //루프제어변수 i 반복문 밖에서 선언
while (i <= endNum) {
    sum += i; //i값을 sum에 누적하기
    i += 1; //i값을 1씩 증가
    System.out.println(sum);	
}

루프제어 continue

  • 루프 내에서 continue를 만나면 나머지를 건너뛰게하고 다시 루프를 시작한다.
  • 보통 특정 조건에 대한 예외처리로 사용한다.
//1~20까지의 정수 중에서 2또는 3의 배수가 아닌 숫자의 총합 출력

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

System.out.println("sum : " + sum);

루프제어 break

  • 루프 내에서 break를 만나면 해당 반복문은 완전히 종료된다.
  • 조건식의 판단 결과와 상관없이 반복문을 완전히 빠져나가고 싶을 때 사용한다.
////구구단 2단~9단까지 x 5 까지만 보이게 하기

for (int dan = 2; dan <= 9 ; dan += 1) {
    for (int num = 1; num <= 9 ; num += 1) {
        System.out.println(dan + " X " + num + " = " + dan*num);
        if (num == 5) break;
    }
    System.out.println("");
}

//console
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
2 X 5 = 10

3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
3 X 5 = 15

:

9 X 1 = 9
9 X 2 = 18
9 X 3 = 27
9 X 4 = 36
9 X 5 = 45

이름을 가지는 반복문 (break with label)

  • 일반적인 break문은 하나의 반복문만 빠져나가게 한다.
  • 여러개가 중쳡된 반복문이나 특정 반복문까지만 빠져나가고 싶을 때 이름을 가진 반복문을 사용한다.
  • 가장 바깥쪽 반복문이나 빠져나가고 싶은 반복문에 이름을 설정한 후 break 키워드 다음에 해당 반복문 이름을 명시한다.
//이름을 가지는 반복문 사용법

allLoop:
    for(~~) {
      for(~~) {
          if(~) {
            break allLoop;
          }
      }
    }
    

// 구구단 9단까지 계산, 출력은 2단 2 x 5 까지
loop:
    for (int dan = 2 ; dan <= 9 ; dan += 1) {
        for (int num = 1; num <= 9 ; num += 1 ) {
            System.out.println(dan + " x " + num + " = " + dan * num);
            if (num == 5) break loop;
        }
    }
profile
정말 개발자가 될 수 있을까?

0개의 댓글