JAVA/코드

강의 2일차 문제풀기- 조건문

record2080 2025. 1. 29. 22:52

문제1) 티모가 버스에 승차한다. 

티모의 나이가 1~8세라면 무료

9~19세 라면 900원
20~64세 라면 1500원
65세 이상이라면 무료다.
티모의 나이가 랜덤일때 얼마를 지불해야하는지 출력하세요.

ex1) (티모가 20세) 1500원을 지불해야합니다.
ex2) (티모가 7세) 0원을 지불해야합니다

주의) 경계값들을 바꿀 수 있어야 한다.

 

<처음 짰던 코드>

package practice;

public class Practice {
	public static void main(String[] args) {
		int age=8;
		if(age>=1||age<=8) {
			System.out.println("무료입니다");
		}
		else if(age>=9||age<=19) {
			System.out.println("900을 지불해야 합니다");
		}
		else if(age>=20||age<=64) {
			System.out.println("1500원을 지불해야 합니다");
		}
		else {
			System.out.println("무료입니다");
		}
	}
}

 

<바뀐코드>

1. 유효성 검사를 해야 함

2. 경계값이 바뀐다는 것을 유의해야 함.

public class Pratice {

	public static void main(String[] args) {

		final int CHECK01=1;
		final int CHECK02=9;
		final int CHECK03=20;
		final int CHECK04=65;
		final int CHECK05=120;
		
		int age=8; 
		if(age<CHECK01 || CHECK05<age) { // 유효성 검사
			System.out.println("티모의 나이가 올바른지 확인해주세요.")
		}
		else {
			int money=0;
						
			if(CHECK02<=age && age<CHECK03) {
				money=900;
			}
			else if(CHECK03<=age && age<CHECK04) {
				money=1500;
			}
			
			System.out.println(money+"원을 지불해야합니다.");
		}
	}
}

 

문제2)  a,b,c 라는 랜덤한 정수가 3개 존재한다.
이중에서 가장 큰 정수의 값을 출력해주세요.(2가지 방법)

 

<첫번째 방법>

public class Practice {
	public static void main(String[] args) {
		
        int a=3;
		int b=4;
		int c=5;

		if(a>b && a>c) { //만약 a가 b,c보다 크면
			System.out.println(a); //a를 출력해주세요
		}
		else if(b>a && b>c) { //b가 a,c보다 크면
			System.out.println(b); //b를 출력해주세요
		}
		else {
			System.out.println(c); //그게아니면 c
		}
   }

 

<두번째 방법> - 각각비교

public class Test02 {
	public static void main(String[] args) {
    
        int a=3;
		int b=4;
		int c=5;
		
		if(a>b) { //a가 b보다 크다면
			// 가장 큰 정수가 될 수 있는 것 : a,c
			if(a>c) { //a와 c를 비교
				System.out.println(a);
			}
			else {
				System.out.println(c);
			}
		}
		else {
			// 가장 큰 정수가 될 수 있는 것 : b,c
			if(b>c) {
				System.out.println(b);
			}
			else {
				System.out.println(c);
			}
		}
   }

 

int a=3;
int b=4;
int c=5;
int max= a>b? a>c? a:c  :   b>c?b:c;
System.out.println(max);

 

문제3)  사과는 1300원이다. 사과를 랜덤하게 구매한다.
사과는 한명당 최대 3개까지 구매할수있다.
손님은 50000원으로 사과를 구매하려고 시도한다.
이때 손님이 지불해야할 사과의 금액과 거스름돈을 출력하세요.

 

<처음코딩>

public class Practice {
	public static void main(String[] args) {
		int money=5000;
		int cnt=3; //손님이 사갈 수 있는 사과의 수
		final int MAX=3;//최대 3개까지(고정)
		int price=1300; //사과는 1300원
		//지불금액
		int total=price*cnt;
		money=-total;//money=money-total;

		if(cnt>MAX) { //유효성 검사 
			System.out.println("사과는 한명당 최대 3개까지 구매할수있습니다!");
		}
		else {
			System.out.println("지불할 금액 : "+total);
			System.out.println("거스름돈 : "+money);
		}
	}
}

 

<수정코딩>

public class Practice {
	public static void main(String[] args) {

		int price=1300; // 사과의 가격
		int cnt=3; // 사과 구매 갯수 (최대 3개까지)

		final int MAX=3;

		if(cnt>MAX) {
			System.out.println("사과는 한명당 최대 3개까지 구매할수있습니다!");
			return;
		}
        
		int money=50000; // 손님의 돈
		int total=price*cnt; // 지불금액
		money -= total; // 거스름돈
		System.out.println("지불할 금액 : "+total);
		System.out.println("거스름돈 : "+money);
	}
}

 유효성 검사만 하고 break로 프로그램을 종료시키고,

나머지 문제를 해결.