학원에서 class들로만 구성했던 선풍기를 싱글턴 방식으로 다시 만들어 보았다.
싱글턴은 쉽게 생각해서 클래스 안에서 자기자신을 다시 사용하도록 설정한다.
package Single_ton_test;
import java.util.Scanner;
//싱글턴으로 기능구현
public class Single_Fan {
private static Single_Fan fan_s = new Single_Fan();//싱글턴 패턴 선언
Single_Fan getInstance() // 싱글턴 패턴 주소로 반환 <1000번지 주소>
{
return fan_s;
}
//사용할 전역변수 선언
boolean fan_power;
String led = "빨강";
int dan = 1;
int ang = 90;
int time = 0;
//문자열과 정수를 사용자로부터 받기위한 스캐너
Scanner sc = new Scanner(System.in);//문자열
Scanner ac = new Scanner(System.in);//정수
Boolean fan_power()//선풍기 전원 설정
{
String ans = sc.nextLine();
if(ans.equals("Y")||ans.equals("y"))//ans가 y라면
{
System.out.println("선풍기를 킬게요\n");
return fan_power = true;
}
else if(ans.equals("N")||ans.equals("n"))//ans가 n라면
{
System.out.println("선풍기를 끌게요\n");
return fan_power = false;
}
else //디폴트값 false
{
return fan_power = false;
}
}
void LED()//LED색상 변경
{
System.out.printf("LED 색상을 선택해주세요. (기본색상은 빨간색입니다.) : ");
led = sc.nextLine();//사용자에게 색상을 적도록 한다.
if(led.equals(""))
{
led = "빨강";
}
System.out.println(led+"으로 선택되었습니다.");
System.out.println();
}
void speed()//풍속설정
{
String[] dan_set = {"1단으로 변경합니다.","2단으로 변경합니다.","3단으로 변경합니다.","4단으로 변경합니다."};//배열 dan_set에 결과값 문자열 설정
System.out.printf("몇단으로 설정 하시겠습니까? (1, 2, 3, 4) : ");
while(true)
{
dan = ac.nextInt();
if(dan == 1)
{
System.out.println(dan_set[0]);
System.out.println();System.out.println(dan_set[0]);
System.out.println();
break;
}
else if(dan == 2)
{
System.out.println(dan_set[1]);
System.out.println();System.out.println(dan_set[1]);
System.out.println();
break;
}
else if(dan == 3)
{
System.out.println(dan_set[2]);
System.out.println();System.out.println(dan_set[2]);
System.out.println();
break;
}
else if(dan == 4)
{
System.out.println(dan_set[3]);
System.out.println();System.out.println(dan_set[3]);
System.out.println();
break;
}
else
{
System.out.printf("%d은(는) 없는 풍속입니다. 다시 선택해주세요! : ",dan);
}
}
}
void angle()//회전각도 설정
{
System.out.printf("각도를 얼마로 설정하시겠습니까? (단, 0도 이하, 180이상은 불가능합니다.) : ");
while(true)//무한반복
{
ang = ac.nextInt();//사용자에게 ang값을 받는다.
if(0<=ang&&ang<=180)//ang이 0도에서 180사이면
{
System.out.println(ang+"도로 설정합니다.\n");
break;//while문 종료
}
else//ang이 0도에서 180사이가 아니라면
{
System.out.printf("%d도는 범위를 벗어납니다. 재입력 해주세요. : ",ang);
System.out.println();
}
}
}
void timer()//타이머 설정
{
System.out.printf("설정할 시간을 입력하세요. : ");
time = ac.nextInt();
System.out.println(time+"분으로 설정되었습니다.");
}
public static void main(String[] args) {
Single_Fan fan_s1 = new Single_Fan().getInstance();//<1000번지 주소> 하나로 쓸 수 있다. static과 유사하게 사용한다.
System.out.println("[LED 선풍기]");
System.out.printf("선풍기를 켜시겠습니까? (Y/N) : ");
fan_s1.fan_power();
if(fan_s1.fan_power == true)//fan_power가 true일때 (선풍기 전원이 들어왔을때)
{
while(true)
{
System.out.println("<선풍기 상태>");
System.out.printf("LED색상 : %s, 풍속 : %d단, 회전각도 : %d도, 타이머 : %d분\n\n",fan_s1.led, fan_s1.dan, fan_s1.ang, fan_s1.time);
System.out.println("선풍기 기능을 설정합니다.");
System.out.println("1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기");
int menu_sel = fan_s1.ac.nextInt();
System.out.println();
if(menu_sel == 1)
{
fan_s1.LED();//LED 색상변경
}
else if(menu_sel == 2)
{
fan_s1.speed();//풍속설정
}
else if(menu_sel == 3)
{
fan_s1.angle();//회전각도
}
else if(menu_sel == 4)
{
fan_s1.timer();//타이머 설정
}
else if(menu_sel == 5)
{
System.out.println("선풍기를 종료합니다.");
break;
}
else
{
System.out.println("잘못입력하셨습니다. 다시 입력해주세요!");
}
}
}
}
}
실행결과는 다음과 같다.
[LED 선풍기]
선풍기를 켜시겠습니까? (Y/N) : y
선풍기를 킬게요
<선풍기 상태>
LED색상 : 빨강, 풍속 : 1단, 회전각도 : 90도, 타이머 : 0분
선풍기 기능을 설정합니다.
1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기
1
LED 색상을 선택해주세요. (기본색상은 빨간색입니다.) :
빨강으로 선택되었습니다.
<선풍기 상태>
LED색상 : 빨강, 풍속 : 1단, 회전각도 : 90도, 타이머 : 0분
선풍기 기능을 설정합니다.
1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기
2
몇단으로 설정 하시겠습니까? (1, 2, 3, 4) : 6
6은(는) 없는 풍속입니다. 다시 선택해주세요! : 2
2단으로 변경합니다.
2단으로 변경합니다.
<선풍기 상태>
LED색상 : 빨강, 풍속 : 2단, 회전각도 : 90도, 타이머 : 0분
선풍기 기능을 설정합니다.
1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기
3
각도를 얼마로 설정하시겠습니까? (단, 0도 이하, 180이상은 불가능합니다.) : 2000
2000도는 범위를 벗어납니다. 재입력 해주세요. :
10
10도로 설정합니다.
<선풍기 상태>
LED색상 : 빨강, 풍속 : 2단, 회전각도 : 10도, 타이머 : 0분
선풍기 기능을 설정합니다.
1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기
4
설정할 시간을 입력하세요. : 1000
1000분으로 설정되었습니다.
<선풍기 상태>
LED색상 : 빨강, 풍속 : 2단, 회전각도 : 10도, 타이머 : 1000분
선풍기 기능을 설정합니다.
1.LED 색상변경 2.풍속설정 3.회전각도 4.타이머 설정 5.선풍기 끄기
5
선풍기를 종료합니다.
'Java > Codes' 카테고리의 다른 글
주소로 좌표 구하기, 좌표로 주소 마커 표시하기 (카카오 맵) (0) | 2022.06.23 |
---|---|
선풍기 (스레드) (0) | 2022.03.24 |
선풍기 (0) | 2022.03.23 |
함수를 사용하여 사칙연산 계산기 만들기 (0) | 2022.03.14 |
2022 대선 투표 프로그램 (0) | 2022.03.14 |