본문 바로가기
수업 문제(국비 지원)/Java

[JAVA] 2022.09.01 - java 클래스 생성자

by byeolsub 2023. 4. 28.
문제 : 
Coin 클래스와 구동 클래스 구현하기
 - Coin 클래스
   멤버 변수 : int side(앞면 : 0, 뒷면:1), sno(동전번호), cnt(동전번호 생성을 위한 클래스변수)
   생성자 : () : 매개변수 없는 생성자 앞면으로 등록
            (int side) : side(0|1)로 동전의 면을 결정
   멤버 메서드 : void flip()
                 Math.random() 메서드를 사용하여 side를 결정 => 0,1만 가능
- 구동 클래스
   Coin 클래스의 객체를 10개 생성하기
   객체 생성시, 동전 번호를 입력하고 flip()메서드를 이용하여 각각의 동전이 앞면인지
   뒷면인지 여부를 출력하기

[결과]
1번동전 : 앞면
2번동전 : 뒷면
.....

전체 앞면 동전의 갯수 : 
전체 뒷면 동전의 갯수 :    

  • 풀이 1
class Coin{
    int side;
    int sno;
    static int cnt = 1;
    
    Coin(int side){
        this.side = side;
        this.sno = cnt++;
    }

    Coin(){
        this.side = 0;
        this.sno = cnt++;
    }

    void flip(){
        System.out.println(sno+"번 동전 : "+((side<1)?"앞면":"뒷면"));
    }

}
/**
 * Test1
 */
public class Test1 {
    /**
     * @param args
     */
    public static void main(String[] args) {
        int i =0;
        int sum1=0;
        int sum2 =0;
        Coin [] c = new Coin [10];

        for(i=0; i<c.length;i++){
            c[i] = new Coin((int)(Math.random()*2));
        }
  
        for(i=0; i<c.length;i++){
            c[i].flip();
        }

        for(i=0; i<c.length;i++){
            if(c[i].side==0){
                sum1++;
            }else {
                sum2++;   
            }
        }
        System.out.println("전체 앞면 동전의 개수 : "+sum1);
        System.out.println("전체 뒷면 동전의 개수 :"+sum2);
    }
    
}

  • 풀이 2
	class Coin {
		int side;
		int sno;
		static int cnt;
		Coin(int a){
		this.side = side;
		sno = ++cnt; // 제일 위에 한번만 써도 가능함. 앞에 ++해주면 숫자 1번부터 출력됨.
	}
	Coin() {
		this.side = 0;
	}
	void flip() {
		System.out.println(sno+"번 동전: "+((side<1)?"앞면":"뒷면"));
	}
}
public class Test1 {
	public static void main(String[] args) {
		int sum1 = 0;
		int sum2 = 0;
		Coin [] c = new Coin[10];
		for(int i=0;i<c.length;i++) {
			c[i] = new Coin((int)(Math.random()*2));
			c[i].flip();
			if(c[i].side==0)
			sum1++;
			else sum2++;
		}
		System.out.println("전체 앞면 동전의 개수: "+sum1);
		System.out.println("전체 뒷면 동전의 개수: "+sum2);
	}
}