본문 바로가기

JAVA/되새김질

야구 스코어 만들기

@) Playbaseball
생성자를 통해서 team1, team2 팀명 할당
메서드1 : team1이 공격하여 획득한 점수(임의의 0~2) return 팀 총점은 누적처리
메서드2 : team2가 공격하여 획득한 점수(임의의 0~2) return 팀 총점은 누적처리
메서드3 : 팀의 현재 스코어는 출력처리

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Playbaseball99 {
    String team1;
    String team2;
    int atk1;
    int atk2;
    
    public Playbaseball99(String team1, String team2) {
        this.team1=team1;
        this.team2=team2;
    }
    public int team1atk() {
        int atk=(int)(Math.random()*3);
        atk1+=atk;
        return atk;
    }
    public int team2atk() {
        int atk=(int)(Math.random()*3);
        atk2+=atk;
        return atk;
    }
    public void score() {
        System.out.println(team1+"\t//\t"+team2);
        System.out.println(atk1+"\t대\t"+atk2);
    }
}
 
public class A10_Practiceee {
    public static void main(String [] args) {
        Playbaseball99 bb = new Playbaseball99("KIA","SK");
        for(int i = 1; i<=9; i++) {
        System.out.println(i+"회 초 "+"KIA의 공격 : "+bb.team1atk());
        System.out.println(i+"회 말 "+"SK의 공격 : "+bb.team2atk());
        bb.score();
        }
    }
}
cs

 

누적처리하는 부분이 이해가 안됨...

1
2
3
4
5
6
7
8
9
10
    public int team2atk() {
        int atk=(int)(Math.random()*3);
        atk2+=atk;
        return atk;
    }
    public void score() {
        System.out.println(team1+"\t//\t"+team2);
        System.out.println(atk1+"\t대\t"+atk2);
    }
 
cs

 

atk와 atk2의 쓰임을 면밀히 관찰해봐야함...

atk는 지역변수. team2atk 메서드 안에서만 쓰이고 끝남.

atk2는 전역변수. 계속 씀.

return 값은 atk. 허허

atk2는 언제씀?

누적처리된 점수를 보여줄 때 씀.

 

내가 착각한 것. 쓸려고 가져온 변수는 반드시 써야하는 줄 알았음.

그니까 team2atk메서드에 atk와 atk2 두개의 변수를 쓰고 있으니 두개를 지지고 볶든 어떻든 반드시 처리해야하는 건줄 알았음... 근데 왠걸.. atk만 리턴값으로 쓰고 atk2는 다른메서드에서 쓰네... 그래서 전역변수로 가져왔구나.

이런 착각 때문에 누적표현을 어떻게 해야할지 감을 못잡음.

복습하다가 하나 더 배웠다! 복습 안했으면 모를뻔했어 ㅋㅋ

 

 

---------------------

변수의 쓰임을 다시 정리해보자.

각 라운드마다 스코어는 초기화 되니 메서드의 지역변수로 쓰고 지역변수를 해당 메서드의 리턴값으로 쓰며

누적스코어는 지역변수가 누적되는 것이므로 라운드메서드안에서 전역변수로 쓰고 누적스코어 메서드에서 불러온다.