(Java programming) 실행흐름 제어

soosoorim·2024년 2월 15일
0

실행흐름제어(4가지)

if – else if – else

  • 변수의 값에 따라 실행의 흐름을 바꾸어야 할때 사용할 수 있다.
  • 여러 경우의 수 중 단 하나의 경우만 실행
public static void main(String[] args) {
    if (첫 번째 비교연산 또는 논리연산) {
        // 첫 번째 비교연산 또는 논리연산의 결과가 true일 때 실행될 코드
    }
    else if (두 번째 비교연산 또는 논리연산) {
        // 첫 번째 비교연산 또는 논리연산의 결과가 false이고
        // 두 번째 비교연산 또는 논리연산의 결과가 true일 때 실행될 코드
    }
    else {
        // 첫 번째 비교연산 또는 논리연산의 결과가 false이고
        // 두 번째 비교연산 또는 논리연산의 결과가 false일 때 실행될 코드
    }
}

변수의 범위

public static void main(String[] args) {
    int number = 7;
    if (number == 5) {
        // number가 5와 같을 경우 실행될 코드.
        System.out.println("숫자가 5와 같습니다.");
    }
    else if (number == 7) {
        // number가 7과 같을 경우 실행될 코드.
        System.out.println("숫자가 7과 같습니다.");
    }
    else {
        // number가 5, 7이 아닐 경우 실행될 코드.
        System.out.println("숫자가 5, 7이 아닙니다.");
    }
}

난수를 이용한 간단한 Up / Down 게임

public static void main(String[] args) {
    // double 타입의 난수
    double randomNumber = Math.random(); 
    // double타입의 난수를 정수로 변환 0 ~ 99
    int answer = (int) (randomNumber * 100); 
    int value = 60;
    
    if (answer == value) {
        System.out.println("정답입니다!");
    }
    else if (answer > value) {
        System.out.println("UP!");
    }
    else if (answer < value) {
        System.out.println("DOWN!");
    }
    System.out.println("정답은 " + answer + "입니다.");
}
  • 연습문제
// 1.(필요: 성인인지 아동인지 / 비행요금 누적 변수) / 3인가족이 100만원으로 여행가기, 아동 기준은 19세

		int money = 1_000_000;
		
		int father = 40;
		int mother = 36;
		int daughter = 11;
		
		int adultOneWayFlightFare = 300_000;
		int kidOneWayFlightFare = 120_000;
		
		int 여행경비 = 0;
		
		if (father >= 19) {
			여행경비 += adultOneWayFlightFare; //아빠 > 19 라면 adult요금을 
            그렇지 않으면  kid 요금을 누적
		}
		else {
			여행경비 += kidOneWayFlightFare;
		}
		
		if (mother >= 19) {
			여행경비 += adultOneWayFlightFare; //엄마 > 19 라면 adult요금을
            그렇지 않으면  kid 요금을 누적
		}
		else {
			여행경비 += kidOneWayFlightFare;
		}
		
		if (daughter >= 19) {
			여행경비 += adultOneWayFlightFare; //딸 > 19 라면  adult 요금을
            그렇지 않다면, kid요금을 누적
		}
		else {
			여행경비 += kidOneWayFlightFare;
		}
		
		if (여행경비 <= money) {
			System.out.println("여행가자!");
		}
		else {
			System.out.println("다음에 가자ㅠㅠ");
		}
		
//또다른 방법 : **삼항연산자** but 오류가 있을 수 있기 때문에 복잡한 곳에서는 안쓰는게 좋음
// 2. 만약, 나이가 15세 이상이고, 19세 미만이면"앤드게임" 영화를 관람할 수 있다.

int age = 16;
		
if (15 <= age && 19 > age ) {
	System.out.println("앤드게임 영화를 관람할 수 있습니다.");
}
// 3. 연습문제 02. 만약, 지금 시간이 오후 1시(13시)가 지났고
	내 체크카드에 8000원 보다 많은 돈이 있다면
	식당에서 점심식사를 할 수 있다.
	그렇지 않다면 편의점에서 라면을 사 먹을 수 있다.
    
int hour = 13;
int creditCard = 6000;
		
if (hour > 13 && creditCard > 8000) {
			System.out.println("식당에서 점심식사를 할 수 있습니다.");
}
else {
			System.out.println("편의점에서 라면을 사 먹을 수 있습니다.");
}
// 4. 만약, 나이가 19세 이상이면,
	"범죄도시1" 영화를 관람할 수 있고
	나이가 15세 이상이고 19세 미만이면
	"앤드게임" 영화를 관람할 수 있고
	나이가 12세 이상 15세 미만이면
	"해리포터" 영화를 관람할 수 있고
	그렇지 않다면 "뽀로로 극장판 공룡섬 대모험"을 관람할 수 있다.
    
int age2 = 14;
		
		
if (age2 > 19) {
	System.out.println("범죄도시1을 관람할 수 있습니다.");
}
else if (age2 >= 15 && 19 > age2) { 
		System.out.println("앤드게임을 관람할 수 있습니다.");
// 앞에 19 미만 조건이 있으니 굳이 또 안써도 된다.
(age2 >= 15) 이렇게 작성해도 같은 결과! 
}
else if (age2 >= 12 && 15 > age2) { 
		System.out.println("해리포터를 관람할 수 있습니다.");
//  앞에 15 미만 조건이 있으니 굳이 또 안써도 된다.
(age2 >= 12) 이렇게 작성해도 같은 결과!
}
else {
	System.out.println("뽀로로 극장판 공룡섬 대모험을 관람할 수 있습니다.");
}  

2. switch (실행흐름의 분리) (잘 안써서 중요하지 않음, if보다 써야할 양 많음)

변수 값에 따라 코드 제어가 가능한 switch

  • 코드의 시작 위치 종료 위치 등을 제어할 수 있고
  • 보통 상태를 제어할 때 사용
  • case에서 break를 실행하면 흐름이 끊어지면서 switch가 종료된다.
int value = 0;
switch(value) {
    case 0:
        value가 0일 때 실행할 코드 + case 1 실행
    case 1:
        value가 1일 때 실행할 코드
        break; -> switch 종료
    case 2:
        value가 2일 때 실행할 코드 + default 실행
    default:
        위 조건이 모두 맞지 않거나 가장 마지막에 실행할 코드
}

if vs. switch

public class SwitchExam {
	public static void main(String[] args) {
    
//01		
		int value = 0;
		
		//switch (상태값) {}
		// 상태값 : 숫자 혹은 문자열
		
		switch (2) {
			// 현재 상태값(value)이 0 이라면 여기부터 시작해라.
			case 0:
				System.out.println("현재 상태값은 0 입니다");
			// 현재 상태값(value)이 1 이라면 여기부터 시작해라.
			case 1:
				System.out.println("현재 상태값은 1 입니다");
				break; // 
			// 현재 상태값(value)이 2 라면 여기부터 시작해라.
			case 2:
			System.out.println("현재 상태값은 2 입니다");
			// 현재 상태값(value)이 0,1,2 모두 아니거나 모든흐름이 종료되었을때 마지막에 실행되는 영역
			default:
				System.out.println("흐름이 종료되었습니다.");
		}
		
		
//02
		
		String status = "뚜껑을 연다";
		switch (status) {
		case "뚜껑을 연다":
			System.out.println("밥솥을 꺼내세요");
		case "밥솥을 꺼낸다":
			System.out.println("쌀을 꺼내세요");
		case "쌀을 꺼낸다":
			System.out.println("밥솥에 쌀을 부으세요");
		case "밥솥에 쌀을 붓는다":
			System.out.println("물을 부으세요");
		}		
	}		
}

3. while(반복문 = ~동안 반복) = 무한반복자

  • 조건이 false가 될때까지 반복을 수행하는 키워드
while(조건: 비교연산자or논리연산자or불린값 자체) {
    반복될 코드 블럭
}
  • 조건이 true 일때만 작동

예시> 1부터 10까지 출력되는 코드 만들기

public static void main(String[] args) {
	int i = 0;
		while(i < 10) {
			System.out.println(++i);
		}
}
  • while 반복문은 종료조건이 없는 무한반복을 위해 사용된다.

무한반복 예제 >

public static void main(String[] args) {
    int i = 0;
    while(true) { // 반복 조건이 true이므로 무한히 반복
        System.out.println(++i);
    }
}

4. for (~까지 반복) = 범위반복자

  • 지정한 범위까지만 반복을 수행하는 반복문
  • Array 또는 List 에서 사용
for(초기값; 반복조건; 증감식) {
    반복할 코드
}

예제 >

아래 결과가 나오게 작성해라.

*
**
***
****
*****

public static void temp() {
	String star = "";
	for (int i = 1; i < 6; i++) {
		star += "*";
		System.out.println(star);
	}
} 

아래 호출 > temp();

1부터 100중 3,5,6의 배수만 출력해라

public static void temp() {
		for (int i = 0; i < 101; i++) {
			if (i % 3 == 0 && i % 5 == 0 && i % 6 == 0) {
				System.out.println(i);
			}
		}
	}
    
=> 여기서 6은 3의 배수이기도 하니 생략해도 된다.

아래 호출 > temp();

1부터 100까지의 합을 출력해라

public static void sum() {
		int sum = 0;
		for (int i = 1; i < 101; i++) {
			sum += i;
		}
		System.out.println(sum);
	}
    
아래 호출 > sum();

1부터 100 중 짝수만 출력하는 코드

i 값은 1부터 시작
i 값은 반복 할 때마다 1씩 증가
i 값이 101보다 작을 동안 반복

public static void main(String[] args) {
    for(int i = 1; i < 101; i++) {
        if (i % 2 == 0) {
            System.out.println(i);
        }
    }
}

0개의 댓글

관련 채용 정보