💻구구단(백준 2737)
N을 입력받아 구구단 N단을 출력한다. (1≤N≤10)JAVA에도 파이썬처럼 range 함수가 있었다!
import java.util.Scanner;
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
IntStream.range(1, 10)
.forEach(i -> {
System.out.println(n + " * " + i + " = "+ n*i);
});
}
}
intStream.range 는 1에서부터 9까지의 integer를 스트림으로 내보낸다. 마지막 값은 포함하지 않는다 (endExclusive). forEach를 이용해 각 interger마다 실행되는 명령을 정의한다. intStream은 한 번 실행하면 break, return문을 넣어도 빠져나가지 않고 끝까지 실행된다.
화살표 연산자(->) 는 람다식과 함께 사용되는 연산자이다. 매개변수가 하나일 경우 괄호 생략 가능해 i -> {} 으로 표현했다. Stream에서 인자를 받아 메소드로 넘겨주고 실행된다.
Stream, 람다식에 대해 이해가 부족해 지금은 이대로 넘어가기로 한다. + 2747번도 비슷하게 풀었다!
💻자바 가위바위보
rps는 숫자로 입력받은 가위, 바위, 보를 비교하여 게임 결과 처리한다.
static void rps(int p1, int p2, String p1Name, String p2Name) {
int tmp = Math.abs(p1 - p2);
int winP = -1; // p1 이김-> 0, p2이김->1
if (p2 < 0 || p2 > 3 || p1 < 0 || p1 > 3) { // 인자 오류
System.out.println("> invalid input ");
return;
} else if (p1 == p2) {
} // 비김, 동작X
else if (tmp == 1) { // 가위,바위 or 바위,보
if (p1 > p2) // p1 이김
winP = 0;
else
winP = 1;
} else { // 가위, 보
if (p1 < p2)// p2 이김
winP = 1;
else
winP = 0;
}
if (winP == 0)
userWin++;
else if (winP == 1)
userLose++;
rpsResultPrint(p1, p2, p1Name, p2Name, winP);
}
runRps는 가위바위보 게임을 -1이 입력되기 전까지 계속 실행한다.
java.util의 Random클래스를 이용해 컴퓨터와 유저 입력으로 진행
게임종료 처리, invalid 값 처리 (+기타 꾸미기)
스캐너 nextInt가 안먹히는 오류가 있어 nextLine으로 스캐너를 비워줬다.
static void runRps() {
Scanner sc = new Scanner(System.in);
Random rand = new Random();
int com, user, gameNum = 0;
System.out.println("가위바위보!\n");
System.out.println("가위:1, 바위2, 보:3 입력");
System.out.println("(input -1 to end)");
System.out.println("*".repeat(20));
while (true) {
System.out.print("> ");
user = sc.nextInt();
sc.nextLine();
com = rand.nextInt(3) + 1;
if (user == -1) { // 게임 종료
System.out.println("*".repeat(20));
System.out.println(" ".repeat(6) + "가위바위보!" + " ".repeat(6) + "\n");
System.out.println("총 " + gameNum + "게임 중\n");
System.out.println("Win: " + userWin);
System.out.println("Lose: " + userLose);
System.out.println("Even: " + (gameNum - userWin - userLose));
System.out.println("\n" + "*".repeat(9) + "END" + "*".repeat(9));
break;
}
if (user < 1 || user > 3) { // 인자 오류
System.out.println("> invalid input ");
} else { //가위바위보 게임 수행
rps(user, com, "user", "com");
gameNum++;
}
System.out.println("*".repeat(20));
}
sc.close();
}
rpsHandStr은 숫자로 입력받은 가위바위보를 문자로 바꿔줌
rpsWinPrint는 둘 중 누가 이겼는지 출력한다.
static String rpsResultPrint(int hand) {
String result;
if (hand == 1)
result = "가위";
else if (hand == 2)
result = "바위";
else
result = "보";
return result;
}
static void rpsWinPrint(int p1, int p2, String p1Name, String p2Name, int win) {
System.out.println(p1Name + " : " + p2Name);
System.out.print(rpsHandStr(p1) + " vs " + rpsHandStr(p2) + "\n> ");
if (win == 0)
System.out.println(p1Name + " 승리");
else if (win == 1)
System.out.println(p2Name + " 승리");
else
System.out.println("비김");
}
입력
1 2 -1
출력
가위바위보!
가위:1, 바위2, 보:3 입력
(input -1 to end)
********************
> 1
user : com
가위 vs 보
> com 승리
********************
> 2
user : com
바위 vs 가위
> user 승리
********************
> -1
********************
가위바위보!
총 2게임 중
Win: 1
Lose: 1
Even: 0
*********END*********
☕️ 잡담
국취제 1유형으로 수급자격 인정되었다 👏👏👏
티스토리 마크다운 자꾸 안먹고..
마크다운 가이드 참고하기..ㅜ
'TIL' 카테고리의 다른 글
220307: 자바 배열 (0) | 2022.03.07 |
---|---|
220304 (0) | 2022.03.04 |
220302: JAVA 클래스, 생성자 (0) | 2022.03.02 |
220228: JVM 개념, JAVA method 개념 (0) | 2022.02.28 |
TIL 작성규칙 (0) | 2022.02.28 |
댓글