gwooden_코린이
java_삼항연산_221125(5일차) 본문
package 에어컨만들기;
import java.util.Scanner;
//import static java.lang.Thread.sleep; // <-- sleep 기능을 사용하려면 외부에서 가져와야 되고
public class Main {
public static void main(String[] args) /*throws InterruptedException <--- 두 번째로 해당 코드를 입력*/{
Aircon lgAircon = new Aircon(); //lg에 대한 새로운 객체 설정
Scanner sc = new Scanner(System.in); //에어컨에 대한 입력
//일정 시간이 지나면 자동으로 현재온도가 줄어들거나 늘어나거나 하는 변수 생성
int time = 0; //경과 시간이 지나는 변수
boolean isSetTemp = false;
String isOn; //전원에 관련된 변수 / 내부에 객체가 생성되면 String isOn = String 객체로 만들어짐
System.out.print("에어컨을 키시겠습니까? [yes/no]"); //질문
isOn = sc.next(); //문자열이니까 next() 사용
if(isOn.equals("yes")) { //위에서 입력받은 값이 "yes"랑 같냐? / .equals 도 비교할 값이할 같냐? 는 질문기능
//setPower 메서드 사용
lgAircon.setPower(true); //setPower 라는 변수가 true로 변경
lgAircon.setAirconState(); //에어컨 온도 확인 메서드 사용
while(true) {//와일문을 이용한 무한루프
// sleep(500); // <-- 위에서 2가지 코드 처리가 완료되어야지만 sleep 기능 사용 가능
// //슬립에 간 순간 해당 시간초 동안 대기했다 다음 내용을 출력 진행, 천분에 1초로 계산
time++; //sleep 기능 대신 사용
switch(lgAircon.getWindStep()) { //바람세기가 몇인지, getWindStep 메서드 호출
case 1: //바람세기가 1단일때
if(time>=60) { //시간이 60초가 넘어야지
isSetTemp = true; //참
}
break;
case 2: //바람세기가 2단일때
if(time>=40) { //시간이 40초가 넘어야지
isSetTemp = true; //참
}
break;
case 3: //바람세기가 3단일때
if(time >= 20); { //시간이 20초가 넘어야지
isSetTemp = true; //참
break;
}
}
if(isSetTemp) {//냉방이 작동되는지 난방인지 알아야 됨
if(lgAircon.isCooler()) //isCooler를 호출하면
lgAircon.setCurrTemp(-1); //냉방이면 현재 온도가 -1씩 감소
if(lgAircon.isHeater())
lgAircon.setCurrTemp(1); //난방이면 1씩 증가
lgAircon.airconIfo(); //에어컨 정보 불러오기
time = 0; //경과 시간 리셋해야 되니
isSetTemp = false; //isSetTemp도 원래 값으로 돌려준다.
}
if(lgAircon.getCurrTemp() == lgAircon.getSetTemp()) {
System.out.println("에어컨 종료합니다.");
break; // 무한루프 도는걸 탈출 시켜야됨
}
}
}
}
}
※결과값 에어컨을 키시겠습니까? [yes/no]yes 현재 온도는15도 입니다. 온도 설정 : 10 설정 온도는10도 입니다. 바람 세기 설정 : 1 현재 바람 세기는1단 입니다. 냉방 시작 ===에어컨 정보 출력=== 전원 : ON 현재 온도 : 14 설정 온도 : 10 냉방 : ON 난방 : OFF 바람 세기 : 1단 ===에어컨 정보 출력=== 전원 : ON 현재 온도 : 13 설정 온도 : 10 냉방 : ON 난방 : OFF 바람 세기 : 1단 ===에어컨 정보 출력=== 전원 : ON 현재 온도 : 12 설정 온도 : 10 냉방 : ON 난방 : OFF 바람 세기 : 1단 ===에어컨 정보 출력=== 전원 : ON 현재 온도 : 11 설정 온도 : 10 냉방 : ON 난방 : OFF 바람 세기 : 1단 ===에어컨 정보 출력=== 전원 : ON 현재 온도 : 10 설정 온도 : 10 냉방 : ON 난방 : OFF 바람 세기 : 1단 에어컨 종료합니다. |
package 에어컨만들기;
import java.util.Calendar; //캘린더 기능을 쓰려면 외부에서 끌어와야 되기 때문에
import java.util.Scanner;
public class Aircon {
boolean isPower; //on, off
int setTemp; //온도 설정
int currTemp; //현재 온도 - 월별 평균 온도
boolean isCooler; //냉방
boolean isHeater; //난방
int windStep; //바람세기 1, 2, 3단 등
Aircon() {
int[] monthTemp = {-10, 3, 10, 15, 22, 23, 24, 30, 24, 20, 15, 5}; //월별 마다 온도 총 12개월 간
Calendar now = Calendar.getInstance(); //달력 기능
int month = now.get(Calendar.MONTH); //현재 날짜와 연동되어 해당 월에 있는 값을 배열방에서 뽑아온다.
currTemp = monthTemp[month]; //월별 평균 온도 값을 저장
//각각의 변수에 저장된다.
isPower = false;
setTemp = 25;
isCooler = false;
isHeater = false;
windStep = 1;
}
public void airconIfo() { //정보 출력 해주는 메서드
// 삼항 연산자 사용
// True면 ON 아니면 False면 OFF
String onOffStr = (isPower) ? "ON" : "OFF";
String coolerStr = (isCooler) ? "ON" : "OFF";
String heaterStr = (isHeater) ? "ON" : "OFF";
System.out.println("===에어컨 정보 출력===");
System.out.println("전원 : " + onOffStr);
System.out.println("현재 온도 : " + currTemp);
System.out.println("설정 온도 : " + setTemp);
System.out.println("냉방 : " + coolerStr);
System.out.println("난방 : " + heaterStr);
System.out.println("바람 세기 : " + 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("바람 세기 설정 : ");
windStep = sc.nextInt();
System.out.println("현재 바람 세기는" + windStep + "단 입니다.");
if(currTemp > setTemp) { //현재 온도가 설정 온도 25 보다 크면 냉방 가동
System.out.println("냉방 시작");
isCooler = true;
isHeater = false;
} else if (currTemp < setTemp) { //현재 온도가 설정 온도 25 보다 작으면 히터가동
System.out.println("난방 시작");
isCooler = false;
isHeater = true;
} else {
isCooler = false;
isHeater = false;
}
}
public void setPower(boolean isPower) {
this.isPower = isPower;
}
public void setTemp(int setTemp) {
this.setTemp = setTemp;
}
public boolean isCooler() {
return isCooler;
}
public boolean isHeater() {
return isHeater;
}
public void setWindStep(int windStep) {
this.windStep = windStep;
}
public int getWindStep() { //바람세기 숫자로 인식 받아야 되기 때문에
return windStep;
}
public void setCurrTemp(int n) { //증가시킬때는 감소시킬때는 매개변수로 보내는 작업
currTemp = currTemp + n;
}
public int getCurrTemp() {
return currTemp;
}
public int getSetTemp() {
return setTemp;
}
}
tip.컨트롤 누르고 마우스 왼쪽클릭 해서 원하는 메서드를 누르면 만든 메서드를 바로 확인해 볼 수 있다.
'java > 5일차' 카테고리의 다른 글
java_접근제한자_221125(5일차) (0) | 2022.11.25 |
---|---|
java_생성자_221125(5일차) (0) | 2022.11.25 |
java_재귀호출_221125(5일차) (0) | 2022.11.25 |
java_오버로딩_221125(5일차) (0) | 2022.11.25 |
java_클래스02_221125(5일차) (0) | 2022.11.25 |