728x90
java if문 문제
[문제 ]
if else 문을 이용 해서 가위 바위 보 를 하는 프로그램을 만들어보자
(가위 바위 보)에 지정된 숫자를 입력 받고 그 숫자와 램덤 한 컴퓨터 숫자와
비교해서 승부를 가려보자
실행결과는
기본적으로 if 문을 사용하고 Random , Scanner 을 사용함
코드는
import java.util.Random; //램덤한 수
import java.util.Scanner; //입력 받는거
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("## 가위 바위 보 게임 ##");
System.out.println("( 1.주먹 2.가위 3.보)");
System.out.print("숫자을 입력하세요 :");
int com = 0;
int user = sc.nextInt();
Random r =new Random();
com = r.nextInt(3)+1;
// r.nextInt(3)은 0~2 에 숫자 중 램덤하게 나오기 때문에 +1 을 해서 1~3에 수가 나올수있게함
System.out.println("유저 "+user);
System.out.println("컴퓨터"+com);
if(user == 1) {
if(com == 2) {
System.out.println("승리");
}
else if(com == 3) {
System.out.println("패배");
}
else {
System.out.println("무승부");
}
}
else if(user == 2) {
if(com == 2) {
System.out.println("무승부");
}
else if(com == 3) {
System.out.println("승리");
}
else {
System.out.println("패배");
}
}
else if(user == 3) {
if(com == 2) {
System.out.println("패배");
}
else if(com == 3) {
System.out.println("무승부");
}
else {
System.out.println("승리");
}
}
else {
System.out.println("다시 입력 해주세요!!");
}
sc.close();
}
}
while 문으로 묶어서 계속 실행 하기
막상 쓰려고 하니까 길지 않나요? 어떻게하면 코드을 더 줄일 수 있을 까요?
hint :!! 밑에 코드 주석을 잘 보세요!! (규칙 찾기)
public class Main {public static void main(String[] args){while(true) {Scanner sc = new Scanner(System.in);System.out.println("==========================");System.out.println("## 가위 바위 보 게임 ##");System.out.println("( 1.주먹 2.가위 3.보 4.나가기)");System.out.print("숫자을 입력하세요 :");int com = 0;Random r = new Random();int user = sc.nextInt();com = r.nextInt(3)+1;System.out.print("결과는요? ");//user - com ???if (user == 1) {//1일때if (com == 2) {//-1System.out.println("< 승 리 >");} else if (com == 3) {//-2System.out.println("< 패 배 >");} else {//0System.out.println("<무 승 부>");}} else if (user == 2) {//2일때if (com == 2) {//0System.out.println("<무 승 부>");} else if (com == 3) {//-1System.out.println("< 승 리 >");} else {//1System.out.println("< 패 배 >");}} else if (user == 3) {3일때if (com == 2) {//1System.out.println("< 패 배 >");} else if (com == 3) {//0System.out.println("<무 승 부>");} else {//2System.out.println("< 승 리 >");}} else {System.out.println("=========================");System.out.println("\t게임끝");}}}}
음 일단 승리 패배 무승부는 규칙이 있다고 볼 수 있어요
승리 할 경우는 user 가 1, 2, 3 일때 com이 2, 3, 1 이고 user - com 은 -1 , -1, 2
무승부는 같을 경우 숫자가 같은 경우 이기 때문에 user - com 은 모두 0 이됩니다.
패배 에경우는 user 가 1,2,3 일때 3, 1, 2 이 오면 되고 user - com 은 -2, 1, 1
추가한것은 조건 문 쓸때 | | (보통 엔터주변 Shift + \ ) 써서 or 이라는 건데 또는 이라는 표시입니다.
줄인건 밑에 있어요^^...
if(user >= 4 || user <= 0) 하면 0이하 4이상의 수을 입력하면 게임이 끝나도록 하는게 좋을까요? ㅎ
728x90
'Basic > Java' 카테고리의 다른 글
[Java] 반복문 while for 흐름제어 (0) | 2020.03.20 |
---|---|
{Java} 조건문 if문 switch문 (문제 포함) (0) | 2020.03.13 |
{Java} 콘솔 입출력(문제 포함) (0) | 2020.03.12 |
{Java} 연산자 문제 (0) | 2020.03.11 |
{Java} 연산자(Operator) (0) | 2020.03.11 |