[Java] 04_제어문(분기문 -break문, continue문)

2022. 8. 1. 13:34·📗 self-study/📗 KH정보교육원 당산지원

04_제어문(분기문 -break문, continue문)

 

조건문 또는 반복문과 함께 쓰이며 "보조" 해 주는 역할
=> 선택 또는 반복 그 이외의 흐름을 제어하는 역할
 
*분기문
1. break문: 반복문 안에서 반복문을 빠져나가는 역할
2. continue문: 반복문 안에서 그 뒤의 코드는 무시하고 바로 다음 증감식으로 넘어가는 역할
 
*break문
반복문 안에서 break문을 만나는 순간 "가장 가까운 내가 포함된 반복문" 한 겹만 빠져나가는 구문
즉, 해당 break문이 속해 있는 반복문만을 빠져나가는 구문
 
*주의할 점 : switch문 안의 break와는 다른 개념
  switch문 안의 break는 해당 switch 중괄호 영역을 빠져나가는 역할
   반복문 안의 break는 해당 반복문 중괄호 영역을 빠져나가는 역할

public void method1() {
		
		// 매번 새로이 반복적으로 발생되는 랜덤값(1 ~ 100 사이의 정수) 출력
		// 단, 그 랜덤값이 홀수일 경우는 반복문을 빠져나가게끔
		
		while(true) { // 무한 반복
			
			int random = (int)(Math.random() * 100) + 1; // 랜덤값 뽑기
			
			if(random % 2 == 1) { // random 값이 홀수일 경우 => 반복문을 빠져나감
			
				break;
			}
			
			else { // random 값이 짝수일 경우 => 출력
				System.out.println("random: " + random);
			}
		}
		
		System.out.println("반복문을 빠져나왔음");
		
	}
	
	public void method2() {
		
		// 매번 사용자에게 문자열을 입력받고 해당 문자열의 길이를 출력
		// 단, 사용자가 "exit"라는 문자열을 입력하는 순간 반복문을 빠져나가게끔
		
		
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			
			System.out.print("문자열 입력: ");
			String str = sc.nextLine();
			
			// 만약 str에 들어 있는 문자열의 내용물이 "exit"라면 반복문을 빠져나감
			
			if(str.equals("exit")) {
				
				break;
				// break; 대신 return; 을 쓴다면?
				// 해당 메소드를 호출한 BranchRun 클래스로 가 버리므로 이 밑으로는 실행되지 않음
				
			}
			// else를 써도 되지만 if문에서 조건을 충족하지 않으면 if문을 빠져나오므로 자동으로 얘 실행됨
			System.out.println(str + " 의 글자 수 길이: " + str.length());
			
			}
		
		// 	위에서 break; 대신 return;을 썼다면 해당 줄 밑으로는 "Unreachable code: 도달할 수 없는 코드"
		// exit이 입력되었을 때 break를 만나 해당 반복문을 빠져나옴
		System.out.println("프로그램이 종료됩니다.");
	}
	
	public void method3() {
		
		// 매번 반복적으로 사용자로부터 양수를 입력받아 1 ~ 해당 그 수까지 출력
		// 단, 정상적으로 양수를 입력했을 경우에만 출력
		// 만약에, 잘못 입력했을 경우 "다시 입력해 주세요"
		
		Scanner sc = new Scanner(System.in);
		
		/*
		System.out.print("양수 입력: ");
		int num = sc.nextInt();
		
		sc.nextLine(); // 이렇게 쓰면 한 번 입력받고 끝!
		*/
		
		while(true) { // 이 구문에 넣어 줌으로써 무한 반복
			
			System.out.print("양수 입력: ");
			int num = sc.nextInt();
			
			sc.nextLine();
			
			// num을 잘 입력받은 시점에서 유효한 양수인지 확인부터!
			
			if(num > 0) { // 양수일 경우
				
				// 1에서부터 num까지 순차적으로 한줄에 연이어서 출력
				for(int i = 1; i <= num; i++) {
					
					System.out.print(i + " ");
				} // 1 2 3 4 ... num 한 줄 완성
				
				break; // 현재 내가 포함된 while(true)를 빠져나가는 역할
			}
			else { // 양수가 아닐 경우
				System.out.println("다시 입력해 주세요");
				
			}			
		}
	}
}

 

 

break와 return의 차이
continue문의 흐름

*continue문
반복문 안의 조건문에서 사용하는 구문
continue문을 만나게 되면 그 뒤에 어떤 구문이 오든 간에 실행하지 않고
가장 가까운 반복문의 증감식으로 올라가라는 뜻이 됨
 
break: 반복문을 빠져나가라
continue: 반복문의 증감식으로 올라가라

public void method1() {
		
		// 1부터 10까지 홀수만을 출력
		// 1 3 5 7 9
		
		// 방법 1. i 값을 매번 2씩 증가하는 방법
		
		/*
		for(int i = 1; i < 10; i += 2) {
			System.out.print(i + " ");
		}
		*/
		
		// 방법 2. 반복문을 돌 때마다 바로 출력하는 게 아니라 홀수인지 판별 후 홀수일 때만 출력 (10번을 돌고, 10번 검사하되 조건에 맞는 것만 출력)
		
		/*
		for(int i = 1; i <= 10; i++) {
			
			if(i % 2 == 1) {
				System.out.print(i + " ");
			}

		}
		*/
		
		// 방법 3. continue문을 이용하는 방법
		
		for(int i = 1; i <= 10; i++) {
			
			if(i % 2 == 0) {
				continue; // i가 짝수라면 이 뒤에 무슨 코드가 있든 무시하고 다음 증감식으로 올라가 주세요
			}
			
			System.out.print(i + " ");
		}
	}

 

*continue문 흐름

continue => 해당 조건일 때는 아무것도 하지 말고 증감식으로 넘어가!라는 뜻으로 보통 continue를 안 쓸 때와 비교하면 조건이 뒤집힘

	public void method2() {
		
		// 1부터 100까지의 총 합계
		// 단, 6의 배수 값은 건너뛰고 더하기
		
		// continue문 없는 버전
		/*
		int sum = 0;
		
		for(int i = 1; i <= 100; i++) {
			
			if(i % 6 != 0) { // 6의 배수가 아닐 경우
				sum += i;
			}
		}
		
		System.out.println("sum: " + sum);
		*/
		
		// continue문이 있는 버전
		int sum = 0;
		
		for (int i = 1; i <= 100; i++) {
			
			if ( i % 6 == 0) { // 6의 배수일 경우
				continue;
			}
						
			sum += i;
		}
        
	}
    
    	public void method3() {
		
		/* 2단 ~ 9단까지 모두 출력하되
		 * 단, 4의 배수 단인 4단, 8단 제외하고 출력하세요
		 * 
		 * 중첩 for문 + continue
		 */
	
		// continue 있는 버전
		

		for(int i = 2; i <= 9; i++) {
			
			// i가 4의 배수일 경우는 뒤의 코드를 무시하고 바로 다음 증감식으로 넘어가겠다
			
			if(i % 4 == 0) {
				continue;
			}
			
			System.out.printf("----- %d단 ----- \n", i);
				
			for(int j = 1; j <= 9 ; j++) {
				System.out.printf("%d * %d = %d \n", i, j, (i*j));
				
			}
			
		}
		
		// continue 없는 버전
		
		/*
		for(int i = 2; i <= 9; i++) {
			
			// 출력을 하긴 하되, 4의 배수가 아닌 단수에서만 출력하기
			if(i % 4 != 0) {
				
				System.out.printf("----- %d단 ----- \n", i);
				
				for(int j =1; j <= 9; j++) {
					System.out.printf("%d * %d = %d \n", i, j, (i*j));
				}
				
			}
		}
		*/		
	}
	
}
저작자표시 (새창열림)
'📗 self-study/📗 KH정보교육원 당산지원' 카테고리의 다른 글
  • [Java] 05_배열(Array)
  • [Java] 배열 연습문제 정리
  • [Java] 04_제어문(반복문-for문, while문)
  • [Java] 04_제어문(조건문 - if문, switch문)
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[Java] 04_제어문(분기문 -break문, continue문)
상단으로

티스토리툴바