gwooden_코린이

java_삼항연산_221125(5일차) 본문

java/5일차

java_삼항연산_221125(5일차)

gwooden22 2022. 11. 25. 16:40
728x90

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.컨트롤 누르고 마우스 왼쪽클릭 해서 원하는 메서드를 누르면 만든 메서드를 바로 확인해 볼 수 있다.

728x90

'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
Comments