JAVA

혼공자4.조건문 반복문, break continue

나는나는용 2023. 2. 21. 00:05
728x90

4. 조건문과 반복문

4-1. 조건문 : if문, switch문

제어문: 실행 흐름을 개발자가 원하는 방향으로 바꿀 수 있도록 해주는 것.

  • 조건문 : 조건식에 따라 다른 실행문을 실행하기 위해 사용.
  • 반복문 : 어떤 작업이 반복적으로 실행되도록 할 때 사용.

if문

조건식의 결과에 따라 블록 실행 여부가 결정됨.
조건식에는 true/false 산출할 수 있는 연산식이나 boolean타입 변수.
if ( 조건식 ){ 실행문A, B, C, ... } 실행문Z
조건식이 true일 경우 실행할 문장이 하나라면, 중괄호 생략 가능.

if - else문

조건식의 결과에 따라 실행 블록을 선택.
if ( 조건식 ){ 실행문A } else{ 실행문B } 실행문C

if - else if - else문

조건문이 여러개인 if문.
else if문의 수는 제한이 없음.
여러 개의 조건식 중 true가 되는 블록만 실행한 후 전체 if문을 벗어남.
if ( 조건식 ){ 실행문A } else if{ 실행문B } else{ 실행문C } 실행문D

package sec01.exam03;
public class IfElseIfElseExample {
	public static void main(String[] args) {
		int score = 75;
		if (score>=90) {
			System.out.println("점수가 90~100 입니다.");
			System.out.println("등급은 A 입니다.");
		} else if (score>=80) {
			System.out.println("점수가 80~89 입니다.");
			System.out.println("등급은 B 입니다.");
		} else if (score>=70) {
			System.out.println("점수가 70~79 입니다.");
			System.out.println("등급은 C 입니다.");
		} else{
			System.out.println("점수가 70 미만입니다.");
			System.out.println("등급은 D 입니다.");
		}
	}
}

실행결과


+) 난수 생성

  • Math.random() 메소드
    0.0 <= Math.random() <1.0 인, double 타입의 난수 하나 리턴함.
    이를 이용하면,
    0~9의 난수 생성 = (int) (Math.random() 10)
    1~10의 난수 생성= (int) (Math.random() 10) + 1
     a부터 시작하는 n개의 정수 중 랜덤: (int) (Math.random() * n) + a
    주사위 번호 랜덤 생성
package sec01.exam04;
public class IfDiceExample {
	public static void main(String[] args) {
		int num=(int)(Math.random()*6)+1;
		if (num==1) {
			System.out.println("1번이 나왔습니다.");
		} else if (num==2) {
			System.out.println("2번이 나왔습니다.");
		} else if (num==3) {
			System.out.println("3번이 나왔습니다.");
		} else if (num==4) {
			System.out.println("4번이 나왔습니다.");
		} else if (num==5) {
			System.out.println("5번이 나왔습니다.");
		}else {
			System.out.println("6번이 나왔습니다.");
		}
	}
}

실행결과 ex)

switch문

조건 제어문. 변수가 어떤 값을 갖느냐에 따라 실행문이 선택됨.
만약 switch문의 괄호 안의 변수 값과 동일한 값을 갖는 case가 없다면 default로 가서 실행문을 실행함. (생략가능)
case끝의 break : 다음 case를 실행하지 않고 switch문 탈출함. 없다면 다음 case가 값에 상관없이 연달아서 실행됨.
위의 주사위 예제를 switch문으로

package sec01.exam05;
public class SwitchExample {
	public static void main(String[] args) {
		int num=(int)(Math.random()+1);
		switch(num) {
		case 1:
			System.out.println("1번이 나왔습니다.");
			break;
		case 2:
			System.out.println("2번이 나왔습니다.");
			break;
		case 3:
			System.out.println("3번이 나왔습니다.");
			break;
		case 4:
			System.out.println("4번이 나왔습니다.");
			break;
		case 5:
			System.out.println("5번이 나왔습니다.");
			break;
		default:
			System.out.println("6번이 나왔습니다.");
			break;
		}
	}
}

실행결과


char타입 switch문

package sec01.exam07;
public class SwitchCharExample {
	public static void main(String[] args) {
		char grade='B';
		switch(grade) {
		case 'A':
		case 'a':
			System.out.println("우수 회원입니다.");
			break;
		case 'B':
		case 'b':
			System.out.println("일반 회원입니다.");
			break;
		default:
			System.out.println("손님입니다.");
		}
	}
}

실행결과


String 타입 switch문

package sec01.exam08;
public class SwitchStringExample {
	public static void main(String[] args) {
		String position ="과장";
		switch(position) {
		case "부장":
			System.out.println("700만원");
			break;
		case "과장":
			System.out.println("500만원");
			break;
		default:
			System.out.println("300만원");
		}
	}
}

실행결과

4-2. 반복문 : for문, while문, do-while문

반복문 : 어떤 작업이 반복적으로 실행되도록 할 때 사용.
코드가 간결해져 개발 시간을 줄이고, 에러 확률도 줄여줌.
루핑 : 제어문블록 실행 완료 후 제어문 처음으로 다시 되돌아가 반복 실행.

for문

주로 반복 횟수를 알고 있을 때 사용.
for문을 이용하여 1~100까지의 정수 합

package sec02.exam03;
public class ForSumFrom1To100Example2 {
	public static void main(String[] args) {
		int sum=0;
		int i=0;
		for(i=1; i<=100; i++) {
			sum+=i;
		}
		System.out.println("1~"+ (i-1) + " 합: " + sum);
	}
}

실행결과


0.0부터 1.0까지 0.1씩 키우는 float 합

package sec02.exam04;
public class ForFloatCounterExample {
	public static void main(String[] args) {
		for(float x=0.1f; x<=1.0f; x+=0.1f) {
			System.out.println(x);
		}
	}
}

코드를 봤을 때는 10번 반복할 것 같지만, 실제 더하는 0.1f값은 0.1보다 약간 큰 수이므로 9번만 반복한다.
실행결과


중첩 for문

for문 안에 for문을 내포.
구구단

package sec02.exam05;
public class ForMultiplicationTableExample {
	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));
			}
			System.out.println("-------------");
		}
	}
}

실행결과 ex)

while문

주로 조건에 따라 반복할 때 사용. 조건식이 true일 경우 반복하며, 조건식에는 비교/논리 연산식이 주로 온다.
while문을 이용하여 1~100까지의 정수 합

package sec02.exam07;
public class WhileSumFrom1To100Example {
	public static void main(String[] args) {
		int sum=0;
		int i=1;
		while(i<=100) {
			sum += i;
			i++;
		}
		System.out.println("1~"+ (i-1) + " 합: " + sum);
	}
}

실행결과


+) 무한루프
while( true ){ 실행문; }

do-while문

조건을 나중에 검사하는 while문.
블록 내부의 실행문을 우선 실행한 후 반복 실행을 계속할지 결정.
do{실행문;}while(조건식);

break문

반복문의 실행을 중지할 때 사용. 대개 if문과 같이 사용됨.
반복문이 중첩되어 있는 경우,
-가장 가까운 반복문만 종료하고 바깥쪽 반복문은 종료하지 않음.
-바깥 반복문도 종료: 바깥쪽 반복문에 이름을 붙인 후, 'break 이름;'

package sec02.exam09;
public class BreakOutterExample {
	public static void main(String[] args) {
		Outter: for(char upper='A'; upper<='Z'; upper++) {
			for(char lower='a'; lower<='z';lower++) {
				System.out.println(upper+"-"+lower);
				if (lower=='g') {
					break Outter;
				}
			}
		}
		System.out.println("프로그램 실행 종료");
	}
}

실행결과

continue문

for, while, do-while문에서만 사용됨.
continue문이 실행되면 for문의 증감식, while/do-while문의 조건식으로 이동.
반복문을 종료하지 않고 계속 반복을 수행.
대개 if문과 같이 사용됨.

예제.1~10까지 짝수만 출력

package sec02.exam10;
public class ContinueExample {
	public static void main(String[] args) {
		for(int i=1;i<=10;i++) {
			if(i%2 != 0) {
				continue;
			}
			System.out.println(i);
		}
	}
}

실행결과

728x90