반응형
오늘은 일요일이다. 주말 동안 tv와 자판기의 모든 경우의 수를 자유롭게 구현하라는 과제를 받았다.
자판기는 경우의 수가 재고의 추가, 매진, 상품과잉, 검색 등등 이중 for문으로 하나씩 비교하는 방법으로 밖에 못쓰게
제한이 걸려있어서 시작도 못하고 있다.
그렇기에 이번에는 내가 구현한 tv를 올려보려고 한다.
내가 구현한 tv의 경우의 수는 일단 tv전원을 켜고 끄는 간단한 기능부터
꺼진 상태에서는 볼륨이나 채널을 조정할수 없게 해 봤다.
꺼진 상태에서 누르면 "tv를 키세요"라는 알림이 나오고 b키를 누르면 돌아간다.
전원을 켜고 case의 채널조절 메뉴를 누르면 채널 Up은 'u' Down 은 'd'로 눌러서 바꿀 수 있다.
마지막으로 음소거도 만들어놨다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int menu;
String ch_con, vol_con, back_menu;
String Up = "u", Down = "d", Back = "b";
do {
System.out.println("1. 전원On/Off");
System.out.println("2. 채널 Up/Down");
System.out.println("3. 볼륨 Up/Down");
System.out.println("4. 음소거");
System.out.println("0. 종료");
System.out.print("조작할 목록을 선택해 주세요 : ");
menu = Integer.parseInt(sc.nextLine());
Tv t1 = new Tv();
switch (menu) {
case 1:
t1.Tvpower();
break;
case 2:
System.out.println("채널Up은'u',Down은 'd'입니다");
if (t1.power == false) {
System.out.println("전원을 켜주세요 뒤로가기는 'b'키입니다.");
back_menu = sc.nextLine();
if (back_menu.equals(Back)) {
break;
}
} else if (t1.power == true) {
for (int i = 0; i <= t1.ch + 1; i++) {
ch_con = sc.nextLine();
if (ch_con.equals(Up)) {
t1.Chup();
}
for (i = t1.ch; i >= t1.ch - 1; i--) {
}
if (ch_con.equals(Down)) {
t1.chDown();
} else if (ch_con.equals(Back)) {
break;
}
}
}
case 3:
System.out.println("채널Up은'u',Down은 'd'입니다");
if (t1.power == false) { // 전원이 켜져있는지 확인하고 조작을 한다
System.out.println("전원을 켜주세요 뒤로가기는 'b'키 입니다");
back_menu = sc.nextLine();
if (back_menu.equals(Back)) {
break;
}
} else if (t1.power == true) {
for (int i = 0; i <= t1.vol + 1; i++) {
vol_con = sc.nextLine();
if (vol_con.equals(Up)) {
t1.VolUp();
}
for (i = t1.vol; i >= t1.vol - 1; i--) {
}
if (vol_con.equals(Down)) {
t1.VolDown();
} else if (vol_con.equals(Back)) {
break;
}
}
}
case 4:
t1.VolOff();
break;
}
} while (menu != 0);
System.out.println("조작을 종료합니다");
sc.close();
}
}
public class Tv {
static int ch, vol;
private static String name = "Samsung";
static boolean power = false;
// 속성 : 전원, 채널, 음량, Tv이름...?
// 기능 : 전원온오프, 채널올림/내림, 음량올림/내림, 음소거
// 채널은 범위안에서 값이 순환할 수 있고, 음량은 최소/최대를 벗어날 수 없다
public static boolean Tvpower() {
if (power == false) {
System.out.printf("%s tv가 켜졌습니다\n", name);
power = true;
} else if (power == true) {
System.out.println("꺼짐");
power = false;
}
return power;
}
public static boolean Tvpower1() {
power = true;
return power;
}
public int Chup() {
ch++;
System.out.printf("현재 채널은 %d번 입니다\n", ch);
if (ch > 50)
{
System.out.println("채널 50번을 넘어버렸습니다. 1번으로 돌아갑니다.");
ch = 1;
}
return ch;
}
public int chDown() {
ch--;
System.out.printf("현재 채널은 %d번 입니다\n", ch);
if (ch < 0) {
System.out.println("채널이 0이하입니다. 채널1로 돌아갑니다.");
ch = 1;
}
return ch;
}
public int VolUp() {
vol++;
System.out.printf("현재 볼륨을 %d입니다\n", vol);
if (vol > 100) {
System.out.println("볼륨이 100을 넘었습니다");
vol = 99;
}
return vol;
}
public int VolDown() {
if (power == false) {
System.out.println("전원을 켜주세요");
} else if (power == true) {
vol--;
System.out.printf("현재 볼륨을 %d입니다\n", vol);
if (vol < 0) {
System.out.println("볼륨이 0입니다");
vol = 0;
}
}
return vol;
}
public int VolOff() {
if (power == false) {
System.out.println("전원을 켜주세요");
} else if (power == true) {
vol = 0;
System.out.println(vol);
}
return vol;
}
}
내용자체는 간단할 수 있지만 바로바로 코드가 짜이지 않는 입장에서
이것을 만드는데도 적지 않은 시간이 걸렸다.
자판기는 학원에서 알려주시는 답안을 참고하여 다음 주 주만에 변형하여 코드를 짜봐야 할 것 같다.
그래도 이것이라도 혼자 만들 수 있다는 것에 작게나마 위안으로 삼으며
내일 학원에 대비해 다른 공부를 하러 가보겠다.
반응형
'JAVA 공부' 카테고리의 다른 글
자바의 기초 - 주단위 능력평가(회원관리 프로그램 CRUD) (0) | 2023.03.31 |
---|---|
자바의 기초 - 상속,다형성 (0) | 2023.03.27 |
자비의 기초 - 객체지향파트(생성자,메서드, 함수 심화) (0) | 2023.03.26 |
블로그 복붙방지 코드(개인용) (0) | 2023.03.24 |
자바의 기초 - 객체지향파트 중 생성자(Constructor) (0) | 2023.03.23 |