문제풀이/자바

TIL - 자바의정석 연습문제[ch6 - 21]

Mo_bi!e 2022. 12. 30. 20:48

[4 - 21]

1. 문제설명

2. 나의 해답

package ex6_21;

public class Exercise6_21 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyTv t = new MyTv();
		t.channel = 100;
		t.volume = 0;
		System.out.println("CH:"+t.channel+", VOL:"+ t.volume);
		
		t.channelDown();
		t.volumeDown();
		System.out.println("CH:"+t.channel+", VOL:"+ t.volume);
		
		t.volume = 100;
		t.channelUp();
		t.volumeUp();
		System.out.println("CH:"+t.channel+", VOL:"+ t.volume);
	}

}
package ex6_21;

public class MyTv {

	boolean isPowerOn;
	int channel;
	int volume;
	final int MAX_VOLUME = 100;
	final int MIN_VOLUME = 0;
	final int MAX_CHANNEL = 100;
	final int MIN_CHANNEL = 1;
	
	void turnOnOff() {
		// (1) isPowerOn의 값이 true면 false로, false면 true로 바꾼다.
		if(isPowerOn == true)
			isPowerOn = false;
		else
			isPowerOn = true;
			
	}
	
	void volumeUp() {
		// (2) volume의 값이 MAX_VOLUME보다 작을 때만 값을 1증가시킨다.
		if(volume < MAX_VOLUME)
			volume++;
		
	}
	void volumeDown() {
	// (3) volume의 값이 MIN_VOLUME보다 클 때만 값을 1감소시킨다.
		if(volume < MIN_VOLUME)
			volume--;
	
	}
	
	void channelUp() {
	// (4) channel의 값을 1증가시킨다.
	// 만일 channel이 MAX_CHANNEL이면, channel의 값을 MIN_CHANNEL로 바꾼다.
		if(channel == MAX_CHANNEL)
			channel = MIN_CHANNEL;
		else
			channel ++;
		
	}
	
	void channelDown() {
	// (5) channel의 값을 1감소시킨다.
	// 만일 channel이 MIN_CHANNEL이면, channel의 값을 MAX_CHANNEL로 바꾼다.
		if(channel == MIN_CHANNEL)
			channel = MAX_CHANNEL;
		else 
			channel--;
	
	}
	
	
} // class MyTv

콘솔

CH:100, VOL:0

CH:99, VOL:0

CH:100, VOL:100

 

3. 정답 코드

	isPowerOn = !isPowerOn;

이거 추가

4. 보충 및 회고 

(1) 보충

 

 

 

 

(2) 회고 : 문제풀이과정에서 어떻게 접근하려고했는지 (접근방법) + 어려움이 있었는데 해결했다.

 

1) 풀이과정에서 큰 어려움은 없었다.

 

2) 다만 하나 배운점이 있다.

true 에서 false로 전환할때 조건문으로 대입할 필요없이 서로 상반되게 작동되도록 하면된다.

 

호출될 때마다 값을 전환시키는 것은 위 정답코드를 참고하면 좋을 것 같다.

 

비단 부울대수외에도 정수나 실수도 음수로 전환할때 이용하면 유용하게 이용할수 있을것 같다.