전기 요금 계산기 만들기
+
코드는 만들었는데 아직 출력값코드를 넣지 못했다,,,
( 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);
}
}
}
'실습👁️🗨️ > 연습' 카테고리의 다른 글
텍스트 스타크래프트 프로그램(this.) (0) | 2023.10.20 |
---|---|
초간단(?) 김밥 주문프로그램 키오스크 만들기 (0) | 2023.10.19 |
자막순화프로그램 (0) | 2023.10.18 |
구구단 프로그램 (0) | 2023.10.18 |
계산기 만들기 (0) | 2023.10.17 |