ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 231017_Java
    Coding 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
Designed by Tistory.