부트캠프를 진행하며 java 핸드북, 자바의 정석등으로 java를 연습하며 이걸 어디에 어떤 용도로 쓰는 거지? 싶었던 게 많았다.
객체 지향을 배우면서 그 갈증이 조금은 해소가 됐지만 우선 이론을 배우고 있고, 알고리즘 공부를 아직 시작 안 해서 (내일부터 시작한다) 체화가 덜되는 느낌이었다. 그래서 자바 TIL 적는 걸 조금 뒤로 미뤄두었었다.
기술은 반복 숙달이지 않는가, 핸드북을 보면서 이해 안되면 강의를 보고 강의를 봐도 이해가 안되면 자바의 정석을 보고 이해가 된 거 같아도 자바의 정석으로 한번 더 공부하고 그랬다.
근데 이번에 강의에서 나온 if문 활용이 너무 재밌어서 가져왔다
if 문으로 가위바위보 만들기
조건문인 if문으로 가위바위보를 만들 건데
가위 바위 보의 값을 받을 수 있는 scanner가 필요하다.
import java.util.scanner 로 scanner 라이브러리를 임포트 하고
Scanner 변수 = new Scanner(System.in)
System.in 이 부분은 화면에서 입력값을 받겠다 라는 뜻이다.
이제 가위 바위 보는 String 타입으로 받을 수 있게
String aHand = 변수.nextLine(); 을 입력한다. aHand 변수는 사용자 a의 손... 그런 의미
String bHand = 변수.nextLine(); 로 사용자 b의 값까지 받으라고 하고
이제!!! if문을 활용할 차례다.
여기서는 Object.equals()를 사용할건데
Object.equals() 란?
문자열과 문자열을 비교해서 같으면 true, 다르면 false를 반환한다.
예)
String a = "안녕"
String b = "안녕"
String c = "곤니치와"
System.out.println(a.equals(b)) // true
System.out.println(b.equals(c)) // false
이런 식으로 문자열의 비교를 위해 쓰이는 메서드다.
이제 이런 식으로 적어준다.
if(Objects.equals(aHand, "가위")) {
if(Objects.equals(bHand, "가위")) {
System.out.println("A와 B는 비겼습니다.");
} else if(Objects.equals(bHand, "바위")) {
System.out.println("B가 이겼습니다.");
} else if(Objects.equals(bHand, "보")) {
System.out.println("A가 이겼습니다.");
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
aHand가 가위면 if문 실행 중첩 if문을 이용해 bHand의 값에 따라 print를 해주자
마지막에는 가위, 바위, 보 세개의 문자열이 아닌 다른 값이 입력되면 B가 이상한 값을 입력했습니다. 알려주면 된다.
이후 aHand의 바위, 보도 인식을 해야하니까 else if으로 이어준 다음 다른 결과들도 만들면 된다.
if(Objects.equals(aHand, "가위")) {
if(Objects.equals(bHand, "가위")) {
System.out.println("A와 B는 비겼습니다.");
} else if(Objects.equals(bHand, "바위")) {
System.out.println("B가 이겼습니다.");
} else if(Objects.equals(bHand, "보")) {
System.out.println("A가 이겼습니다.");
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else if(Objects.equals(aHand, "바위")) {
if(Objects.equals(bHand, "가위")) {
System.out.println("A가 이겼습니다.");
} else if(Objects.equals(bHand, "바위")) {
System.out.println("A와 B는 비겼습니다.");
} else if(Objects.equals(bHand, "보")) {
System.out.println("B가 이겼습니다.");
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else if(Objects.equals(aHand, "보")) {
if(Objects.equals(bHand, "가위")) {
System.out.println("B가 이겼습니다.");
} else if(Objects.equals(bHand, "바위")) {
System.out.println("A가 이겼습니다.");
} else if(Objects.equals(bHand, "보")) {
System.out.println("A와 B는 비겼습니다.");
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else {
System.out.println("A가 이상한 값을 입력 했습니다.");
마지막에 else 입력 후 aHand가 가위 바위 보 셋이 아닌 다른 문자열을 입력하면 알려주는 문구 출력
이제 결과는?
잘 만들어 진 것을 볼 수 있다.
반복문을 쓰면 3판 2선 5판 3선등을 만들어 볼 수 있겠는데?
처음엔 for문을 생각했으나, while문이 가독성도 좋고 적합할 거 같았다.
int a = 0;
int b = 0;
b가 이기면 b++,,, a가 이기면 a++,,,
몹시 당황ㅋㅋ 노트북 터질뻔
알고보니 while은 값이 true 일때 반복 false가 나오면 멈춰서 그런 거 였다.
배웠는데 헷갈렸었다.. 이 경험으로 이제 안 헷갈릴 듯
OR를 AND로 바꾸면 해결되겠다고 생각했다
아 반복할 때 값을 계속 받아야되는데 그 값이 위에 있었다.
배운 거 바로 응용해서 5판 3선 가위바위보 만든 내 자신... 되게 만족스럽다!!!
중간에 컴퓨터 터질 뻔한 대참사가 일어났지만 다 경험이라고 생각한다ㅋㅋ
오늘은 여기서 끝!!
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = 0;
int b = 0;
// 두 개의 값을 비교하는 메서드 -> Objects.equals(좌, 우) : 좌 우가 같은 경우 true, 아니면 false
while (a < 3 && b < 3) {
System.out.println("안내면 진다 가위바위보 !");
System.out.println("A 사용자 입력 : ");
String aHand = sc.nextLine();
System.out.println("B 사용자 입력 : ");
String bHand = sc.nextLine();
if (Objects.equals(aHand, "가위")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("A와 B는 비겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "바위")) {
b++;
System.out.println("B가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "보")) {
a++;
System.out.println("A가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else if (Objects.equals(aHand, "바위")) {
if (Objects.equals(bHand, "가위")) {
a++;
System.out.println("A가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A와 B는 비겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "보")) {
b++;
System.out.println("B가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else if (Objects.equals(aHand, "보")) {
if (Objects.equals(bHand, "가위")) {
b++;
System.out.println("B가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "바위")) {
a++;
System.out.println("A가 이겼습니다. A 점수:" + a + " / B 점수:" + b);
} else if (Objects.equals(bHand, "보")) {
System.out.println("A와 B는 비겼습니다. A 점수:" + a + " / B 점수:" + b);
} else {
System.out.println("B가 이상한 값을 입력 했습니다.");
}
} else {
System.out.println("A가 이상한 값을 입력 했습니다.");
}
}
}
코드 공유
'TIL' 카테고리의 다른 글
TIL 2023-10-16 문자열 겹쳐쓰기, 객체지향 4가지 특징 (0) | 2023.10.16 |
---|---|
TIL 2023-10-13 일기, 배열.length, Collection Map, 대소문자 바꿔서 출력하기 (0) | 2023.10.13 |
TIL 2023-10-11 팀 발표 하고, 보면서 배운 것 (0) | 2023.10.11 |
TIL 2023-10-10 팀프로젝트 CRUD 구현 (0) | 2023.10.10 |
TIL 2023-10-06 팀 프로젝트 프로필 및 카드 움직임 구현하며 배운 (0) | 2023.10.06 |