분기문 - break·continue 문 (23.04.21)

·2023년 4월 21일
0

Java

목록 보기
12/35
post-thumbnail

📝 분기문


💡 break

반복문에서는 break문 자신이 포함된 가장 가까운 반복문을 빠져나가는 구문

for(초기값1; 조건식1; 증감식1) {
수행될 코드1;
for(초기값2; 조건식2; 증감식2) {
수행될 코드2;
break;
}
수행될 코드3;
[break;]
}
  • [예제 1]
    1부터 10까지 1씩 증가하며 출력하는 반복문 작성
    단, 5를 출력하면 반복문을 멈춤
		for(int i = 1 ; i <= 10 ; i++) {
			System.out.print(i + " ");
			
			if(i == 5) {
				break; // 반복문을 멈춤
			}
			
		}
  • [예제 2] 0이 입력될 때까지의 모든 정수의 합 구하기
		Scanner sc = new Scanner(System.in);
		
		int input = 0;
		int sum = 0;
		
		// while문은 처음에 무조건 수행하고, 특정 조건에 종료하는 방법
		// 1) input에 초기값을 0이 아닌 다른 값			
		// 	  while(input !=0)
		
		// 2) do ~ while 문 사용
		
		// 3) 무한 루프 상태의 while문을 만들고
		// 	  내부에 break 조건 작성
		
		while(true) { // 무한 루프
			
			System.out.print("정수 입력 : ");
			input = sc.nextInt(); // 입력
			
			// 입력받은 수가 0인지 검사 (while 종료 조건)
			if(input == 0) {
				break;
			}
			
			sum += input; // 누적
		}
		System.out.println("합계 : " + sum);
		// Unreachable code (도달할 수 없는 코드)
  • [예제 3]
    입력받은 모든 문자열을 누적
    단, "exit@" 입력 시 문자열 누적을 종료하고 결과 출력
		Scanner sc = new Scanner(System.in);
		
		String str = ""; // 빈 문자열
						 // 쌍따옴표("")라는 기호를 이용해 String 리터럴임을 지정
						 // 하지만 내용이 없음
		
		while(true) { // 무한 루프
			
			System.out.print("문자열 입력(exit@ 입력 시 종료) : ");
			String input = sc.nextLine();
			// next() : 다음 한 단어 (띄어쓰기 포함 X)
			// nextLine() : 다음 한 줄 (띄어쓰기 포함)
			
			// 입력받은 문자열이 "exit@" 이면 반복 종료
			//if(input == "exit@") {
			if(input.equals("exit@")) {
				
				// String 자료형은 비교 연산자(==)로 같은 문자인지 판별할 수 없다.
				// 비교 연산자는 보통 기본 자료형 끼리의 연산에만 사용 가능하다.
				// -> String은 기본 자료형이 아닌 참조형
				
				// ** 해결 방법 : 문자열1.equals(문자열 2) 으로 비교 가능하다 **
				break;
			}
			
			str += input + " \n"; // 누적 시 개행문자 추가
			
		} // while 끝
		
		System.out.println("------------------------");
		System.out.println(str);
  • [예제 4] 중첩 반복문 내부에서 break 사용하기

    	구구단 2~9단까지 모두 출력
    	단, 2단은 x2까지, 3단은 x3까지 ... 9단은 x9
		for(int dan = 2; dan <= 9; dan++) {
			
			for(int num = 1; num <= 9; num++) {
				
				System.out.printf("%d X %d = %2d  ", dan, num, dan * num);
				
				if(dan == num) { // 단과 곱해지는 수가 같을 경우
					break;
					// 분기문이 중첩 반복문 내에서 사용되면
					// 가장 가까운 반복문에 작용한다!
					
				}

			}
			System.out.println(); // 줄 바꿈
		}

💡 continue

  • 반복문 내에서만 사용 가능하며
    반복문 실행 시 continue 아래 부분은 실행하지 않고 반복문 다시 실행
  • for문의 경우 증감식으로 이동, while(do~while)문의 경우 조건식으로 이동
  • 전체 반복 중에 특정 조건을 만족하는 경우를 제외하고자 할 때 유용
  • [예제 1]
    1 ~ 10까지 1씩 증가하며 출력
    단, 3의 배수는 제외
		// break : 반복문을 바로 멈춤
		// continue : 다음 반복으로 넘어감
        
		for(int i = 1; i <= 10; i++) {
			
			if( i %3 == 0) { // i가 3의 배수인 경우
				continue;
				
			}
			System.out.print(i + " ");
		}
  • [예제 2]
    1 ~ 100까지 1씩 증가하며 출력하는 반복문
    단, 5의 배수는 건너뛰고
    증가하는 값이 40이 되었을 때 반복을 멈춤
		for(int i = 1; i <= 100; i++) {
			
			if(i == 40) {
				break;
			}
			
			if(i %5 == 0) {
				continue;
			}
			
			System.out.print(i + " ");

		}

💡 Math.random()

0.0 이상 1.0 미만의 난수를 생성하는 메서드

  • [예시] 난수 3개 생성하기
		int random = (int)(Math.random() * 3 + 1);
		// 0.0 <= x < 1.0
		// 0.0 <= x * 3 < 3.0
		// 1.0 <= x * 3 + 1 < 4.0
		// 1 <= (int)(x * 3 + 1) < 4
		// == 1 이상 4 미만의 정수 == 1 2 3
profile
풀스택 개발자 기록집 📁

0개의 댓글