๊ธฐ๋ฅ ์ค๊ณ
(1) ์ ์ on/off
(2) ์จ๋ ์ค์ (1๋ ๋จ์)
(3) ํ์ฌ ์จ๋ ํ์
(4) ์ฟจ๋ฌ on/off
(5) ํํฐ on/off
(6) ๋ฐ๋ ์ธ๊ธฐ ์ค์ (1๋จ๊ณ / 2๋จ๊ณ / 3๋จ๊ณ)
์ค์ ์กฐ๊ฑด ๋ฐ ๋์
(1) ์ค์ ์จ๋์ ๋ฐ๋ผ ์จ๋ ์กฐ์ ๊ธฐ๋ฅ + ๋ฐ๋์ธ๊ธฐ์ ๋ฐ๋ผ (60์ด/30์ด/20์ด) ์ฃผ๊ธฐ๋ก ์จ๋ ๋ณ๊ฒฝ
(2) ์์ด์ปจ์ ๋์์ Scanner๋ก ํน์ ๋ฌธ์๋ฅผ ์ ๋ ฅ ๋ฐ์ ๋์ ์ํด
(3) ํ์ฌ ์จ๋ ํ์๋ฅผ ์ํด ์บ๋ฆฐ๋ API๋ฅผ ์ด์ฉํด์ ํด๋น ๋ฌ์ ์ ์ ํ ์จ๋๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๊ตฌํ
(4) ํ์ฌ ์จ๋์ ์ค์ ์จ๋๊ฐ ๊ฐ์์ง๋ฉด ์๋ ์ข ๋ฃ
์์
1. ๊ธฐ๋ฅ ์ค๊ณ์ ํ์ํ ์ธ์คํด์ค ํ๋ ์ ์ธ
2. ๊ธฐ๋ณธ ์์ฑ์ ์์ฑ - ์ด๊ธฐ๊ฐ ์ธํ
3. ํ์ํ ๊ธฐ๋ฅ ์ค๊ณ(๋ฉ์๋ ์์ฑ)
Aircon
package ์์ด์ปจ๋ง๋ค๊ธฐ0118;
import java.util.Calendar;
import java.util.Scanner;
public class AirCon {
// 1. ๊ธฐ๋ฅ ์ค๊ณ์ ํ์ํ ์ธ์คํด์ค ํ๋ ์ ์ธ
private boolean isPower; // ์ ์
private int setTemp; // ์จ๋ ์ค์
private int currTemp; // ํ์ฌ ์จ๋
private boolean isCooler; // ๋๋ฐฉ๊ธฐ ์ ์
private boolean isHeater; // ๋๋ฐฉ๊ธฐ ์ ์
private int windStep; // 1๋จ, 2๋จ, 3๋จ
// 2. ๊ธฐ๋ณธ ์์ฑ์ ์์ฑ - ์ด๊ธฐ๊ฐ ์ธํ
public AirCon() {
final int[] monthTemp = {-5, 3, 8, 14, 22, 27, 31, 30, 22, 18, 7, 2};
Calendar now = Calendar.getInstance();
int month = now.get(Calendar.MONTH); // ํ์ฌ ๋ฌ์ ๊ฐ์ ธ์ด
currTemp = monthTemp[month];
isPower = false;
setTemp = 20;
isCooler = false;
isHeater = false;
windStep = 1;
}
// 3. ๋ฉ์๋ ์์ฑ
// ์์ด์ปจ์ ์จ๋๊ฐ ๋ณ๊ฒฝ ๋ ๋ ํ๋ฉด ์ถ๋ ฅ
public void airConInfo() {
String onOffStr = (isPower) ? "ON" : "OFF";
String coolerStr = (isCooler) ? "ON" : "OFF";
String heaterStr = (isHeater) ? "ON" : "OFF";
final String[] windStr = {"", "1๋จ๊ฒ", "2๋จ๊ณ", "3๋จ๊ณ"};
System.out.println("====== ์์ด์ปจ ์ ๋ณด ======");
System.out.println("์ ์ : " + onOffStr);
System.out.println("ํ์ฌ ์จ๋ : " + currTemp);
System.out.println("์ค์ ์จ๋ : " + setTemp);
System.out.println("ํํฐ : " + heaterStr);
System.out.println("์ฟจ๋ฌ : " + coolerStr);
System.out.println("๋ฐ๋ ์ธ๊ธฐ : " + windStr[windStep]);
}
// ์์ด์ปจ์ ๋ํด ์จ๋์ ๋ฐ๋์ธ๊ธฐ ์ค์ ๋ฐ ์กฐ๊ฑด์ ๋ฐ๋ผ ํํฐ ๋๋ ์ฟจ๋ฌ ๊ฐ๋
public void setAirConState() {
Scanner sc = new Scanner(System.in);
System.out.println("ํ์ฌ ์จ๋๋ " + currTemp + " ์
๋๋ค.");
System.out.print("์จ๋๋ฅผ ์ค์ ํ์ธ์. : ");
setTemp = sc.nextInt();
System.out.println("์ค์ ์จ๋๋ " + setTemp + " ์
๋๋ค.");
System.out.print("๋ฐ๋ ์ธ๊ธฐ๋ฅผ ์ค์ ํ์ธ์.[1๋จ]/[2๋จ]/[3๋จ] : ");
windStep = sc.nextInt();
if (currTemp > setTemp) { // ํ์ฌ ๋์ด ์ํ
System.out.println("์ฟจ๋ฌ๊ฐ ๋์ ํฉ๋๋ค.");
isCooler = true;
isHeater = false;
} else if (currTemp < setTemp) { // ํ์ฌ ์ถ์ด ์ํ
System.out.println("ํํฐ๊ฐ ๋์ ํฉ๋๋ค.");
isHeater = true;
isCooler = false;
} else {
isCooler = false;
isHeater = false;
}
}
public void setPower(boolean power) {
isPower = power;
}
public int getWindStep() {
return windStep;
}
public boolean isHeater() {
return isHeater;
}
public boolean isCooler() {
return isCooler;
}
public void setCurrTemp(int n) {
currTemp += n;
}
public int getCurrTemp() {
return currTemp;
}
public int getSetTemp() {
return setTemp;
}
}
* Calendar() ์ฃผ์ํ ์ !!
> Calendar.MONTH ์์ ์ป์ด์ค๋ ๊ฐ์ ๋ฒ์๋ 1~12๊ฐ ์๋๋ผ 0~11์ด๋ค.
์ฆ, ์ป์ด์ค๋ ๊ฐ์ด 0์ด๋ฉด 1์, 11์ด๋ฉด 12์์ ์๋ฏธํ๊ธฐ ๋๋ฌธ์ monthTemp[] 0๋ฒ์งธ ์๋ฆฌ๋ฅผ " "์ผ๋ก ๋์ง ์์๋ค.
* ์ ์ํ ๊ฐ์ ์ฝ๋ ์ฉ๋๋ก๋ง ์ธ ๋์๋ final๋ก ์์ฑ
์ฝ๋ ์ฉ๋๋ก ์ฐ๋๊ฑฐ๋ผ๋ฉด ๊ฐ์ด ๋ฐ๋๋ฉด ์๋๊ฑฐ๋ ์๋ฐ๋๊ฑฐ๊ธฐ ๋๋ฌธ์..
Main
package ์์ด์ปจ๋ง๋ค๊ธฐ0118;
import java.util.Scanner;
import static java.lang.Thread.sleep;
public class AirConMain {
public static void main(String[] args) throws InterruptedException {
AirCon lgAirCon = new AirCon();
Scanner sc = new Scanner(System.in); // ์์ด์ปจ์ ์ผ๊ธฐ ์ํด ์ฝ์ ์
๋ ฅ...
int elapsedTime = 0; // ๊ฒฝ๊ณผ ์๊ฐ ๊ณ์ฐํ๊ธฐ ์ํ ๋ณ์
boolean isSetTemp = false; // ์จ๋๊ฐ ๋ณ๊ฒฝ๋์ด์ผํ ์กฐ๊ฑด ํ์ธ
System.out.print("์์ด์ปจ์ ์ผ์๊ฒ ์ต๋๊น?[yes/no] : ");
String isOn = sc.next(); // ์์ด์ปจ์ ์ผ๊ธฐ ์ํ ๋ฌธ์์ด์ ์
๋ ฅ ๋ฐ์
if(isOn.equalsIgnoreCase("yes")) {
lgAirCon.setPower(true);
lgAirCon.setAirConState(); // ์จ๋์ ๋ฐ๋์ธ๊ธฐ๋ฅผ ์ค์ ํ๊ณ ์ค์ ์ ๋ฐ๋ผ ์ฟจ๋ฌ/ํํฐ ๊ฐ ๋ณ๊ฒฝ
while(true) {
sleep(1000); // 1์ด(1000๋ถ์ 1์ด * 1000)
elapsedTime++;
switch(lgAirCon.getWindStep()) {
case 1 :
if(elapsedTime >= 60) isSetTemp = true; break;
case 2 :
if(elapsedTime >= 30) isSetTemp = true; break;
case 3 :
if(elapsedTime >= 30) isSetTemp = true; break;
default:
}
if(isSetTemp) {
if(lgAirCon.isHeater()) lgAirCon.setCurrTemp(1);
if(lgAirCon.isCooler()) lgAirCon.setCurrTemp(-1);
lgAirCon.airConInfo();
isSetTemp = false;
elapsedTime = 0;
}
if(lgAirCon.getCurrTemp() == lgAirCon.getSetTemp()) {
System.out.println("์์ด์ปจ์ ์ข
๋ฃ ํฉ๋๋ค.");
break;
}
}
}
if(isOn.equalsIgnoreCase("NO")) System.out.println("์์ด์ปจ ์ฌ์ฉ์ ์ข
๋ฃํฉ๋๋ค."); return;
}
}
* ๋ฐ๋ ์ธ๊ธฐ๋ ๋จ๊ณ์ ๋ฐ๋ผ ์จ๋๊ฐ ๋ณํ๋ ์๊ฐ์ด ๋ค๋ฅด๋ค.
1๋จ๊ณ๋ฉด 60์ด, 2๋จ๊ณ๋ฉด 30์ด, 3๋จ๊ณ๋ฉด 20์ด์ 1๋์ฉ ์จ๋๊ฐ ์ค์ ์จ๋๋ก ๋ง์ถฐ์ง๋๋ก ์ค์ ํ๋ค.
* ๋ฐ๋ผ์ -5๋์์ 20๋๋ก ๋ง์ถ๋ ค๋ฉด 3๋จ๊ณ์ฌ๋ ํ..12๋ถ ์ ๋ ๊ฑธ๋ฆฐ๋ค.
๊ฒฐ๊ณผ๊ฐ๋ง ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์ธํ ๊ฐ์ ๋ฐ๊ฟ ์๋ ์์ง๋ง ๊ทธ๋ฅ ๋ด๊ฐ ์ค์ ํ๋๋ก ๋ ๋ฌ๋ดค๋ค. ใ ใ ใ
์๊ฐ์ ํ๋ฌํ๋ฌ...
๊ทธ๋ ์กฐ๊ธ๋ง ๋...
๊ดํ 20๋๋ก ์ค์ ํ๋..
๊ทธ๋ฅ ๋์ถฉ 10๋๋ก ํ ๊ฑธ.. . ..
๋๋์ด! ์จ๋๊ฐ 20๋๊ฐ ๋์ด ์์ด์ปจ์ด ์ข ๋ฃ๋๋ค.
(์ง์ง)