-
231017_JavaCoding Class 2023. 10. 17. 17:59
2차원 배열 score 의 모든 요소의 합을 구하고 출력하는 예제
package myProject; public class Ex5_8 { public static void main(String[] args) { // TODO Auto-generated method stub int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40} }; int sum = 0; //누적변수는 0으로 초기화 //열의 이름: 행의 개수 for (int i = 0; i < score.length; i++) { for (int j = 0; j < score[i].length; j++) { System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]); sum += score[i][j]; } } System.out.println("sum=" + sum); } }
같은 크기의 배열 moving[][]을 만들고 값을 score->moving으로 옮겨서 moving을 출력해본다.
package myProject; public class Training_1017_3 { public static void main(String[] args) { //시도한 흔적 //나는 for문을 반복하지 않고 어떻게 moving 배열 에 저장해야할지 감이 안 잡혀서 막혔다. int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40} }; int sum = 0; //누적변수는 0으로 초기화 for (int i = score.length - 1; i >= 0; i--) { for (int j = score[i].length - 1; j >= 0; j--) { System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]); sum += score[i][j]; } } System.out.println("sum=" + sum); } }
score 의 배열을 moving에 역으로 복사하고, 복사한 배열을 출력함.
package myProject; public class Training_1017_3 { public static void main(String[] args) { // TODO Auto-generated method stub int[][] score = { {100, 100, 100}, {20, 20, 20}, {30, 30, 30}, {40, 40, 40} }; int[][] moving = { {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0} }; for(int i=0; i < moving.length; i++) {//moving의 1열부터 3열까지 반복. for(int j=0; j < moving[i].length; j++) { //moving 의 1행~4행까지 반복. moving[3-i][j] = score[i][j]; //score의 값을 불러와서 역순으로 복사. // 예시. // score[0][0]일 땐 moving[3-0][0].. // score[3][2]일 땐 moving[3-3][2].. } } System.out.println("moving"); //moving (score의 값을 복사함) 불러오기 for(int i=0; i < moving.length; i++) { //붙여넣은 moving의 1열부터 3열까지 반복. for(int j=0; j < moving[i].length; j++) { //붙여넣은 moving의 1행~4행까지 반복. System.out.printf("[%d]", moving[i][j]); //붙여넣은 moving의 1행1열부터 3열 4행까지 출력 } System.out.println(); }
package myProject; import java.util.Scanner; public class Training_1017_6 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("가위, 바위, 보 중 하나를 입력하세요. > "); String userChoice = scanner.nextLine(); int user = -1; //0~2 값은 가위바위보로 지정되어 있으므로 사용자가 아무것도 입력하지 않았음을 의미하는 -1로 설정 if (userChoice.equals("가위")) { user = 0; } else if (userChoice.equals("바위")) { user = 1; } else if (userChoice.equals("보")) { user = 2; } int com = (int) (Math.random() * 3); // 난수 0, 1, 2 생성 후 com에 할당 String comChoice = ""; //컴퓨터가 생성한 난수를 comChoice에 부여 if (com == 0) { //난수가 0 이면 comChoice는 가위 comChoice = "가위"; } else if (com == 1) { //난수가 1 이면 comChoice는 바위 comChoice = "바위"; } else if (com == 2) { //난수가 2 이면 comChoice는 보 comChoice = "보"; } if (user == com) { System.out.println("비겼습니다.\n"); //유저와 컴퓨터의 수가 같을 경우 } else if ((user == 0 && com == 2) || (user == 1 && com == 0) || (user == 2 && com == 1)) { //유저와 컴퓨터의 수가 1:2, 1:0, 2:1일 경우 System.out.println("이겼습니다.\n"); } else { //그 외의 수 System.out.println("졌습니다.\n"); } System.out.println("유저의 수: " + userChoice); System.out.println("컴퓨터의 수: " + comChoice ); } }
교수님은 승리했을 경우, 패배했을 경우, 비겼을 경우의 모든 수를 9가지라고 하셨지만 9개를 일일이 비교하는 건 너무 길어지고 번거로울 것 같아서...
요약
1. 유저가 입력한 가위, 바위, 보는 각각 0~2의 수와 매치하고 수로 변환
2. 컴퓨터 난수 생성, 컴퓨터가 생성한 난수는 각각 가위, 바위, 보와 매치
3. 승패는 0~2의 수를 비교하여 출력
즉, 사람 대 컴퓨터의 수가 0:0, 1:1, 2:2일 경우 비김으로 출력
사람 대 컴퓨터가 0:2, 1:0. 2:1일 경우 이김으로 출력
그 외 나머지 수는 모두 패배이므로 패배로 출력.
4. 추가로 컴퓨터의 난수가 무엇인지 알기 위해, 유저의 수와 컴퓨터의 수를 출력했다.
유저는 입력한 그대로 출력, 컴퓨터는 난수와 매치된 가위, 바위, 보 를 출력해서 확인함.
교수님은 0.1.2 를 눌러서 메뉴, 실행, 종료 승패 승률 출력?을 볼 수 있도록 하려고 했지만 순서도 작성에서 애를 먹어서 여기까지 했다.
'Coding Class' 카테고리의 다른 글
231020_DB 설계와 SQL 활용 (0) 2023.10.20 231018_CSS (0) 2023.10.18 231012_Java (0) 2023.10.17 231016_HTML과 CSS (0) 2023.10.16 231013_DB 설계와 SQL 활용 (0) 2023.10.13