My Melody Is Cute 전기요금계산기 만들기
본문 바로가기

실습👁️‍🗨️/연습

전기요금계산기 만들기

전기 요금 계산기 만들기

 

+

코드는 만들었는데 아직 출력값코드를 넣지 못했다,,,

 ( 99kwh,150kwh,250kwh,301kwh,450kwhm 510kwh 사용량 전기요금 출력 ) > 6개

계산기 코드를 만들었을때 기능별 메서드분리와 중복된 코드를 제거해야한다고 말씀해주셔서

아직 수정해야하지만 그런 점을 한번 더 생각해보고 만들수 있었던거같다

전기요금 계산법이 헷갈려서 시간을 많이 썼다ㅠ 수학이랑 안친해..

 

1. 사용량이 구간에 따라서 나눠져있다

2. 구간별로 따로 계산해서 합한다 사용구간*금액

3.고정된 값을 배열에 담아서 순회하면서 계산 가능 (수정이 용이해진다 효율성) 

 

 

package com.codestates;

public class ElectricityUsageCalculator {
      public static void main(String[] args) {
          System.out.println("=".repeat(25));
          System.out.println(" 주택용 전기요금(저압) 계산기 ");
          System.out.println("=".repeat(25));
      }

          //TODO:

          // 1. 100kwh 이하인 경우 전력당 60.7 원이 부가됩니다.

          // 2. 100kwh 초과인 경우 125.9원 부과됩니다.

          // 3. 200kwh 초과인 경우 280.6원 부과됩니다.

          // 4. 300kwh 초과인 경우 417.7원 부과됩니다.

          // 5. 400kwh 초과인 경우 187.9원 부과됩니다.

          // 6. 500kwh 초과인 경우 670.6원 부과됩니다.

          /**
           * 예)
           * 전기 사용량이 250kWh인 경우,
           * 1) 100 kWh 이하의 구간(100kWh) 요금 -> 100 * 60.7
           * 2) 100 kWh 초과의 구간(100kWh) 요금 -> 100 * 125.9
           * 3) 200 kWh 초과의 구간(50kWh) 요금 -> 50 * 280.6
           *
           * 합계 = (100 * 60.7) + (100 * 125.9) + (50 * 280.6)
           */

      private static double powerExpense(double electricityCost) {
            double result = 0.0;

            if( electricityCost <= 100) {
                // 전기 사용량이 100kwh 이하인 경우
                result += electricityCost * 60.7; // 요금 = 사용량 * 단가

               } else if ( electricityCost <= 200) {
                // 전기 사용량이 100kwh 초과 200kwh 이하인 경우
                result += 100 * 60.7 + ( electricityCost - 100) * 125.9; //처음 100kwh 사용량 * 60.7 + 나머지 * 단가
               } else if ( electricityCost <= 300) {
                // 전기 사용량이 200kwh 초과 300kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + ( electricityCost - 200) * 280.6;
                // 처음 100 * 60.7 + 다음 100kwh * 125.9 + 나머지사용량 * 단가
               } else if ( electricityCost <= 400) {
                // 전기 사용량이 300kwh 초과 400kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + ( electricityCost - 300) * 417.7;
                // 처음 100 * 60.7 + 다음 100kwh * 125.9 + 다음 100 *280.6 + 나머지사용량*단가
               } else if ( electricityCost <= 500) {
                //전기 사용량이 400kwh 초과 500kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + 100 * 417.7 + ( electricityCost - 400) * 187.9;
               } else if (electricityCost <= 600) {
                //전기 사용량이 500kwh 초과 600kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + 100 * 417.7 + 100 * 187.9 + ( electricityCost - 500) * 670.6;
               }

                return result;
        }
}

처음에 보고 큰 수 부터 입력해서 계산하는 방식으로 하고싶었는데

아직 어떻게 해야할지 감이 안잡혀서 하나하나 더하는 방식으로 일단 만들어봤다

 

문제를 받으면 항상 필요한 값을 표현하기 위한 코드를 생각해내서 어떻게 작성해야하는지

머뭇거리는데 이문제도 그런 느낌이였다...

 

++주어진 값을 배열에 넣어서 향상된 for문으로 배열항목의 개수만큼 반복해서 정해진 값 출력

package com.codestates;

public class ElectricityUsageCalculator {
      public static void main(String[] args) {
          System.out.println("=".repeat(25));
          System.out.println(" 주택용 전기요금(저압) 계산기 ");
          System.out.println("=".repeat(25));

          //TODO:
          //전력 사용량이 정해져있음 99 150 250 301 450 510
        
          int[] electricityCosts = {99, 150, 250, 301, 450, 510};
            //배열을 저장할 변수선언 : 사용할 배열
          for ( int cost : electricityCosts) {
              double calculatedCost = powerExpense(cost);
              System.out.println( cost + "kwh의 전기 요금은" + calculatedCost + "원 입니다.");
          }

          }

      private static double powerExpense(double electricityCost) {
            double result = 0.0;

            if( electricityCost <= 100) {
                // 전기 사용량이 100kwh 이하인 경우
                result += electricityCost * 60.7; // 요금 = 사용량 * 단가

               } else if ( electricityCost <= 200) {
                // 전기 사용량이 100kwh 초과 200kwh 이하인 경우
                result += 100 * 60.7 + ( electricityCost - 100) * 125.9; //처음 100kwh 사용량 * 60.7 + 나머지 * 단가
               } else if ( electricityCost <= 300) {
                // 전기 사용량이 200kwh 초과 300kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + ( electricityCost - 200) * 280.6;
                // 처음 100 * 60.7 + 다음 100kwh * 125.9 + 나머지사용량 * 단가
               } else if ( electricityCost <= 400) {
                // 전기 사용량이 300kwh 초과 400kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + ( electricityCost - 300) * 417.7;
                // 처음 100 * 60.7 + 다음 100kwh * 125.9 + 다음 100 *280.6 + 나머지사용량*단가
               } else if ( electricityCost <= 500) {
                //전기 사용량이 400kwh 초과 500kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + 100 * 417.7 + ( electricityCost - 400) * 187.9;
               } else if (electricityCost <= 600) {
                //전기 사용량이 500kwh 초과 600kwh 이하인 경우
                result += 100 * 60.7 + 100 * 125.9 + 100 * 280.6 + 100 * 417.7 + 100 * 187.9 + ( electricityCost - 500) * 670.6;
               }


                return result;
        }
}

 

 

솔루션코드

public class ElectricityUsageCalculator {
    public static void main(String[] args) {
        System.out.println("=".repeat(25));
        System.out.println(" 주택용 전기요금(저압) 계산기 ");
        System.out.println("=".repeat(25));

        int[] usages = new int[]{99, 150, 250, 301, 450, 510};

        for(int idx = 0; idx < usages.length; idx++) {
            // 현재 금액은 usages[idx]
                // usages[idx] * 구간별 금액을 계산하면 총액을 계산할 수 있다.
            int usage = usages[idx]; // 현재 전력 사용량
            double result = 0.0;

            if(usage > 500) {
                result += (usage - 500) * 670.6;
                usage = 500;
            }
            if(usage > 400) {
                result += (usage - 400) * 417.7;
                usage = 400;
            }
            if(usage > 300) {
                result += (usage - 300) * 280.6;
                usage = 300;
            }
            if(usage > 200) {
                result += (usage - 200) * 187.9;
                usage = 200;
            }
            if(usage > 100) {
                result += (usage - 100) * 125.9;
                usage = 100;
            }
            result += usage * 60.7;
            System.out.println(result);
        }
    }
}