본문 바로가기
Java

2022-08-26 자바

by allwing12 2022. 8. 30.
package com.example.MyJavaProject;
// 문제 : 아래와 같이 출력되도록 해주세요.
// 조건 : 클래스는 전사 클래스 1개만 만들어주세요.

    class Main {
        public static void main(String[] args) {
            전사 a전사 = new 전사();

            a전사.공격();
            // 칼(으)로 공격합니다.

            a전사.창_모드로_변경();

            a전사.공격();
            // 창(으)로 공격합니다.

            a전사.지팡이_모드로_변경();

            a전사.공격();
            // 지팡이(으)로 공격합니다.
        }
    }
class 전사 {
        String 무기_이름;

        전사 () {
            무기_이름 = "칼";
        }

        void 공격() {
            System.out.printf("%s(으)로 공격합니다.\n",무기_이름);
        }
        void 창_모드로_변경() {
            무기_이름 = "창";
        }
        void 지팡이_모드로_변경() {
            무기_이름 = "지팡이";
    }

}

 

 

이 문제에서는 어렵다 보다는 혼자 어렵게 생각을 해서 못풀었던 것 같다.

그냥 무기_이름만 주고 각각 모드 변경 시에 무기_이름만 바꿔주면 되었던것들이다..

 

class Main {
    public static void main(String[] args) {
        병사 a병사 = new 병사();
        a병사.이름 = "홍길동";

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 이병 입니다.
        a병사.공격();
        // 홍길동 이병이 공격합니다.(공격력 : 7)

        a병사.진급();

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 일병 입니다.
        a병사.공격();
        // 홍길동 일병이 공격합니다.(공격력 : 9)

        a병사.진급();

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 상병 입니다.
        a병사.공격();
        // 홍길동 상병이 공격합니다.(공격력 : 11)
    }
}
class 병사 {
    String 이름;
    int 공격력 = 7;
    int 급 =0;

    void 자기소개 () {
        if (급 == 0) {
            System.out.println("안녕하세요. 저는 홍길동 이병입니다.");
        }else if (급 == 1){
            System.out.println("안녕하세요. 저는 홍길동 일병입니다.");
        }else {
            System.out.println("안녕하세요. 저는 홍길동 상병입니다.");
        }
    }
    void 공격 () {
        if (공격력 == 7) {
            System.out.println("홍길동 이병이 공격합니다.(공격력 : 7)");
        }else if (공격력 == 8){
            System.out.println("홍길동 일병이 공격합니다. (공격력 : 9)");
        }else {
            System.out.println("홍길동 상병이 공격합니다. (공격력 : 11)");
        }
    }

    void 진급 () {
        if (급 == 0){
            급++;
        }else if (급 == 1){
            급++;
        }else {
            급++;
        }
        if (공격력 == 7) {
            공격력++;
        }else if (공격력 == 8){
            공격력++;
        }else {
            공격력++;
        }
    }

}





 

 

이 문제는 좀 헷갈렸었는데 그냥 계급은 급으로 해서 0을 줘놓고 시작했고 

공격력은 7부터 시작을 했었다. 

그렇게 해서 결국엔 if 문을 활용해서 문제를 풀긴 풀었는데 강사님은 밑에 처럼 푸시더라...

 

package com.example.MyJavaProject;

class Main {
    public static void main(String[] args) {
        병사 a병사 = new 병사();
        a병사.이름 = "홍길동";

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 이병 입니다.
        a병사.공격();
        // 홍길동 이병이 공격합니다.(공격력 : 7)

        a병사.진급();

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 일병 입니다.
        a병사.공격();
        // 홍길동 일병이 공격합니다.(공격력 : 9)

        a병사.진급();

        a병사.자기소개();
        // 안녕하세요. 저는 홍길동 상병 입니다.
        a병사.공격();
        // 홍길동 상병이 공격합니다.(공격력 : 11)
    }
}

class 병사 {
    String 이름;
    int 계급_번호;

    병사() {
        계급_번호 = 1;
    }

    void 자기소개() {
        System.out.printf("안녕하세요. 저는 %s %s 입니다.\n", 이름, get계급명());
    }

    void 공격() {
        System.out.printf("%s %s(이)가 공격합니다.(공격력 : %d)\n",이름, get계급명(), get공격력());
    }

    String get계급명() {
        String 계급명 = null;
        if(계급_번호 == 1) {
            계급명 = "이병";
        } else if(계급_번호 == 2) {
            계급명 = "일병";
        } else if(계급_번호 == 3) {
            계급명 = "상병";
        }
        return 계급명;
    }

    int get공격력() {
        int 공격력=0;
        if(계급_번호 == 1) {
            공격력 = 7;
        } else if(계급_번호 == 2) {
            공격력 = 9;
        } else if(계급_번호 == 3) {
            공격력 = 11;
        }
        return 공격력;
    }

    void 진급() {
        계급_번호++;
    }

}

 

이건 get을 활용해서 푼건데 강사님께서 이렇게 푸셨다.

근데 뭐 일단 get을 어떻게 쓰는지 알려주시는거였어서 get을 어떻게 활용하는지를 알아야할 것 같다.

그리고 get 사용시에는 무조건 마지막에 return을 해줘야한다.

아 그리고 String 계급명 = null 과 int 공격력 = 0 을 준 것 처럼 기본적으로 노멀라이징을 해줘야한다고 한다.

근데 어째서 첫 번째 if 문부터 해서 실행이 되는지를 모르겠다..

 

 

package com.example.MyJavaProject;

class Main {
    public static void main(String[] args) {
        전사 a전사 = new 홍길동();
        a전사.a무기 = new 활();

        a전사.공격();
        // 출력 => 홍길동이(가) 활(으)로 공격합니다.

        a전사 = new 홍길순();

        a전사.공격();
        // 출력 => 홍길순이(가) 칼(으)로 공격합니다.

        a전사.a무기 = new 창();
        a전사.공격();
        // 출력 => 홍길순이(가) 창(으)로 공격합니다.
    }
}
class 전사 {
    무기 a무기;
    String 이름;
    void 공격 () {
        a무기.작동(이름);
    }
}
class 홍길동 extends 전사{
    홍길동 () {
        이름 = "홍길동";
    }

}
class 홍길순 extends 전사 {
    홍길순 () {
        이름 = "홍길순";
        a무기 = new 칼();
    }
}
class 무기 {
    String 이름;
    void 작동 (String 사용자명) {
        System.out.printf("%s이(가) %s(으)로 공격합니다.\n",사용자명, 이름);
    }
}
class 활 extends 무기{
    활 () {
        이름 = "활";
    }
}
class 창 extends 무기{
    창 () {
        이름 = "창";
    }
}
class 칼 extends 무기 {
    칼 () {
        이름 = "칼";
    }
}

댓글