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 무기 {
칼 () {
이름 = "칼";
}
}'Java' 카테고리의 다른 글
| 2022-08-31 자바 수업 (static, final) (0) | 2022.09.01 |
|---|---|
| 2022-08-30 자바 수업 (0) | 2022.08.30 |
| 2022-08-25 자바 수업 문제 풀이 (Arrlist 및 생성자) (0) | 2022.08.26 |
| Java(자바) - 상속,접근제한자, 추상클래스 및 오버라이딩 (0) | 2022.08.25 |
| 2022-08-24 자바 수업 문제 풀이 (0) | 2022.08.24 |
댓글