본문 바로가기
JAVA

IF, Switch 조건문 가위바위보

by hhana 2022. 9. 30.

조건문을 다양하게 사용하여 구현해보는 가위바위보

import java.util.Scanner;

public class IfTest02 {

	public static void main(String[] args) {
		//com, user
		//가위:0, 바위:1, 보:2
		
		int user;
		Scanner sc=new Scanner(System.in);
		System.out.println("가위:0, 바위:1, 보:2");
		System.out.print("뭘 내볼까? 숫자로 입력해봐! : ");
		user=sc.nextInt();
//		if (user==0) {
//			System.out.println("나는 가위!");
//		} else if (user==1) {
//			System.out.println("나는 바위!");
//		} else {
//			System.out.println("나는 보!");
//		}
		switch(user) {
		case 0: System.out.println("나는 가위!"); break;
		case 1: System.out.println("나는 바위!"); break;
		case 2: System.out.println("나는 보!");
		}

 

우선 내가 낼 값을 숫자로 입력해 봅시다

 

	
		int com = (int) (Math.random()*3); //0.0~1.0미만 -> 0~3
//		System.out.println(com);
		switch(com) {
		case 0: System.out.println("컴퓨터는 가위"); break;
		case 1: System.out.println("컴퓨터는 바위"); break;
		case 2: System.out.println("컴퓨터는 보"); break;
		}

 

컴퓨터가 내는 값은 Math클래스의 random메서드를 이용하여 구현해줍니다

Math.randoum() 메서드는 0이상 1미만의 값을 더블 값으로 반환해줍니다

 

int com = (int) (Math.random()*3);

 

우리는 가위:0, 바위:1, 보:2 라는 규칙을 정했기 때문에

0이상 3미만의 랜덤 값을 받을 수 있도록 (Math.random()*3) 을 해주고 double 값을 int 값으로 캐스팅하여

0, 1, 2 의 값만 나올 수 있도록 해줍니다

 

 

switch를 이용한 승패 결과 출력!
		
		//출력: 당신이 이겼습니다., 서로 비겼습니다., 당신이 졌습니다.
		System.out.println("두구두구 결과는?");
		int result = user-com;
		switch (result) {
		case 0: System.out.println("비겼다"); break;
		case -2: case 1: System.out.println("이겼다!"); break;
		case-1: case 2: System.out.println("졌다ㅠ"); break;
		}
		//이기는 경우: 0:2, 1:0, 2:1
		//지는 경우: 0:1, 1:2, 2:0
		//비기는 경우: 0:0, 1:1, 2:2

 

user 값과 com 값의 차이를 이용하여 승패 결과를 출력해주었습니다

 

 

If Else를 이용한 승패 결과 출력!
		//이기는 경우: 0:2, 1:0, 2:1
		//지는 경우: 0:1, 1:2, 2:0
		//비기는 경우: 0:0, 1:1, 2:2
		if(user==0) {
			if(com==0) 
				System.out.println("서로 비겼습니다.");
			else if(com==1)
				System.out.println("당신이 졌습니다.");
			else if(com==2)
				System.out.println("당신이 이겼습니다.");
			
		}else if(user==1) {
			if(com==0) 
				System.out.println("당신이 이겼습니다.");
			else if(com==1) 
				System.out.println("서로 비겼습니다.");
			 else if(com==2) 
				System.out.println("당신이 졌습니다.");
		} else if (user==2) {
			if(com==1) 
				System.out.println("당신이 이겼습니다.");
			else if(com==2) 
				System.out.println("서로 비겼습니다.");
			 else if(com==0) 
				System.out.println("당신이 졌습니다.");
		}
	}

}

 

반복적으로 입력되는 코드가 많고 길어지네요

 

 

switch와 if의 차이점

 

코드가 길어지고 복잡해진다면 어떤 조건문을 사용하는 것이 더 효율적인가요?

정답은 switch!

 

if문은 else if까지 쭉 조건을 훑어내려가야 하기 때문에 코드가 길어지면 시간이 더 많이 소요됩니다

 

switch는 한번 확인한 후 해당하는 결과값을 딱! 찾으러 가면 되니까 좀 더 빨라요

그리고 break;를 걸지 않으면 여러개의 실행문을 중첩하여 실행시킬 수도 있다는 점

 

여러가지로 활용해보고 상황에 적절한 조건문을 활용해보세요

댓글