문제 리모컨의 입력(전원, 상, 하, 좌, 우)에 따라 TV, 에어컨, 로봇청소기를 제어하는 문제입니다 이를 해결하는 다음 프로그램을 해석하세요 리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 전원
TV 전원을 켭니다
에어컨 전원을 켭니다
로봇청소기 전원을 켭니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 상
현재 채널은 91번입니다
현재 온도는 20도입니다
직진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 종료
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 전원
TV 전원을 켭니다
에어컨 전원을 켭니다
로봇청소기 전원을 켭니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 상
현재 채널은 91번입니다
현재 온도는 20도입니다
직진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 하
현재 채널은 90번입니다
현재 온도는 19도입니다
후진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 좌
현재 음량은 9입니다
현재 풍량은 4입니다
좌회전합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 우
현재 음량은 10입니다
현재 풍량은 5입니다
우회전합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 종료
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 전원
TV 전원을 켭니다
에어컨 전원을 켭니다
로봇청소기 전원을 켭니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 상
현재 채널은 91번입니다
현재 온도는 20도입니다
직진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 상
현재 채널은 92번입니다
현재 온도는 21도입니다
직진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 상
현재 채널은 93번입니다
현재 온도는 22도입니다
직진합니다
리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : 종료
알고리즘 프로그램 시작 가전제품(TV, 에어컨, 로봇청소기)을 제어하는 리모컨 준비 리모컨 입력에 따라 가전제품(TV, 에어컨, 로봇청소기) 제어 리모컨 전원 선택시 가전제품 제어 리모컨 상(△) 선택시 가전제품 제어 리모컨 하(▽) 선택시 가전제품 제어 리모컨 좌(◁) 선택시 가전제품 제어 리모컨 우(▷) 선택시 가전제품 제어 프로그램 종료 TV 클래스 리모컨 전원 선택시 전원을 켜거나 끄기 리모컨 상(△) 선택시 채널을 +1 이동 리모컨 하(▽) 선택시 채널을 -1 이동 리모컨 좌(◁) 선택시 음량을 -1 이동 리모컨 우(▷) 선택시 음량을 +1 이동 AirConditioner 클래스 리모컨 전원 선택시 전원을 켜거나 끄기 리모컨 상(△) 선택시 온도를 +1 이동 리모컨 하(▽) 선택시 온도를 -1 이동 리모컨 좌(◁) 선택시 풍량을 -1 이동 리모컨 우(▷) 선택시 풍량을 +1 이동 Robot 클래스 리모컨 전원 선택시 전원을 켜거나 끄기 리모컨 상(△) 선택시 직진 리모컨 하(▽) 선택시 후진 리모컨 좌(◁) 선택시 좌회전 리모컨 우(▷) 선택시 우회전 프로그램 코드 // 파일명 : ./Chapter12/AllApplianceControl.java
import java.util.Scanner;
import remoteControl.*;
public class AllApplianceControl
{
// 프로그램 시작
1 public static void main (String[] args ) {
Scanner scan = new Scanner( System.in );
// 가전제품(TV, 에어컨, 로봇청소기)을 제어하는 리모컨 준비
2 RemoteControl[] appliance = {
3 new TV(),
4 new AirConditioner(),
5 new RobotCleaner()
};
// 리모컨 입력에 따라 가전제품(TV, 에어컨, 로봇청소기) 제어
String result = "";
6 do {
System.out.print( "리모컨의 상, 하, 좌, 우, 전원, 종료 중 하나를 입력하세요 : ");
7 result = scan.next();
// 리모컨 전원 선택시 가전제품 제어
8 if ( result.equals( "전원" ) ) {
9 for ( int i = 0; i < appliance.length; i++ ) {
10 appliance[i].clickPower();
}
}
// 리모컨 상(△) 선택시 가전제품 제어
11 else if ( result.equals( "상" ) ) {
12 for ( int i = 0; i < appliance.length; i++ ) {
13 appliance[i].clickUp();
}
}
// 리모컨 하(▽) 선택시 가전제품 제어
14 else if ( result.equals( "하" ) ) {
15 for ( int i = 0; i < appliance.length; i++ ) {
16 appliance[i].clickDown();
}
}
// 리모컨 좌(◁) 선택시 가전제품 제어
17 else if ( result.equals( "좌" ) ) {
18 for ( int i = 0; i < appliance.length; i++ ) {
19 appliance[i].clickLeft();
}
}
// 리모컨 우(▷) 선택시 가전제품 제어
20 else if ( result.equals( "우" ) ) {
21 for ( int i = 0; i < appliance.length; i++ ) {
22 appliance[i].clickRight();
}
}
23 } while( result.equals( "전원" ) || result.equals( "상" ) || result.equals( "하" ) || result.equals( "좌" ) || result.equals( "우" ) );
// 프로그램 종료
24 }
}
// 파일명 : ./src/remoteControl/RemoteControl.java
package remoteControl;
// 전원, 상, 하, 좌, 우 버튼이 있는 리모컨
public interface RemoteControl
{
boolean ON = true, OFF = false;
void clickPower();
void clickUp();
void clickDown();
void clickLeft();
void clickRight();
}
// 파일명 : ./src/remoteControl/TV.java
package remoteControl;
import java.util.Scanner;
// TV 클래스
public class TV implements RemoteControl
{
// TV 전원, 채널, 음량 변수
private boolean power;
private int channel;
private int volume;
// TV 생성자로 TV 상태 초기화
T1b public TV() {
this.power = OFF;
this.channel = 90;
this.volume = 10;
T1e }
// 리모컨 전원 선택시 전원을 켜거나 끄기
@Override
T2b public void clickPower() {
if ( this.power == OFF ) {
this.power = ON;
System.out.println( "TV 전원을 켭니다" );
}
else {
this.power = OFF;
System.out.println( "TV 전원을 끕니다" );
}
T2e }
// 리모컨 상(△) 선택시 채널을 +1 이동
@Override
T3b public void clickUp() {
System.out.println( "현재 채널은 " + ( ++this.channel ) + "번입니다" );
T3e }
// 리모컨 하(▽) 선택시 채널을 -1 이동
@Override
T4b public void clickDown() {
System.out.println( "현재 채널은 " + ( --this.channel ) + "번입니다" );
T4e }
// 리모컨 좌(◁) 선택시 음량을 -1 이동
@Override
T5b public void clickLeft() {
System.out.println( "현재 음량은 " + ( --this.volume ) + "입니다" );
T5e }
// 리모컨 우(▷) 선택시 음량을 +1 이동
@Override
T6b public void clickRight() {
System.out.println( "현재 음량은 " + ( ++this.volume ) + "입니다" );
T6e }
}
// 파일명 : ./src/remoteControl/AirConditioner.java
package remoteControl;
// AirConditioner 클래스
public class AirConditioner implements RemoteControl
{
// 에어컨 전원, 온도, 풍량 변수
private boolean power;
private int temperature, windStrength;
// AirConditioner 생성자로 에어컨 상태 초기화
A1b public AirConditioner() {
this.power = OFF;
this.temperature = 19;
this.windStrength = 5;
A1e }
// 리모컨 전원 선택시 전원을 켜거나 끄기
@Override
A2b public void clickPower() {
if ( this.power == OFF ) {
this.power = ON;
System.out.println( "에어컨 전원을 켭니다" );
}
else {
this.power = OFF;
System.out.println( "에어컨 전원을 끕니다" );
}
A2e }
// 리모컨 상(△) 선택시 온도를 +1 이동
@Override
A3b public void clickUp() {
System.out.println( "현재 온도는 " + ( ++this.temperature ) + "도입니다" );
A3e }
// 리모컨 하(▽) 선택시 온도를 -1 이동
@Override
A4b public void clickDown() {
System.out.println( "현재 온도는 " + ( --this.temperature ) + "도입니다" );
A4e }
// 리모컨 좌(◁) 선택시 풍량을 -1 이동
@Override
A5b public void clickLeft() {
System.out.println( "현재 풍량은 " + ( --this.windStrength ) + "입니다" );
A5e }
// 리모컨 우(▷) 선택시 풍량을 +1 이동
@Override
A6b public void clickRight() {
System.out.println( "현재 풍량은 " + ( ++this.windStrength ) + "입니다" );
A6e }
}
// 파일명 : ./src/remoteControl/RobotCleaner.java
package remoteControl;
// Robot 클래스
public class RobotCleaner implements RemoteControl
{
private boolean power;
// Robot 생성자로 로봇청소기 상태 초기화
R1b public RobotCleaner() {
this.power = OFF;
R1e }
// 리모컨 전원 선택시 전원을 켜거나 끄기
@Override
R2b public void clickPower() {
if ( this.power == OFF ) {
this.power = ON;
System.out.println( "로봇청소기 전원을 켭니다" );
}
else {
this.power = OFF;
System.out.println( "로봇청소기 전원을 끕니다" );
}
R2e }
// 리모컨 상(△) 선택시 직진
@Override
R3b public void clickUp() {
System.out.println( "직진합니다" );
R3e }
// 리모컨 하(▽) 선택시 후진
@Override
R4b public void clickDown() {
System.out.println( "후진합니다" );
R4e }
// 리모컨 좌(◁) 선택시 좌회전
@Override
R5b public void clickLeft() {
System.out.println( "좌회전합니다" );
R5e }
// 리모컨 우(▷) 선택시 우회전
@Override
R6b public void clickRight() {
System.out.println( "우회전합니다" );
R6e }
}
실행 순서 ※ 실행순서 및 메모리상태는 A키(이전) 및 D키(다음)를 눌러도 확인할 수 있습니다