JAVA/java 문제

[자바JAVA] 조건문 - 전기 사용량 입력받아 이번달 요금 출력하기 if문 switch문

자바칩 프라푸치노 2020. 10. 2. 16:39

문제 -전기 사용량을 입력받아 이번달 요금 출력하기

* 주의 : 아직 초보자의 포스팅이라 코드가 별로일 수 있음..

더 좋은 코드가 있다면 제발 알려주시길 바랍니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.Scanner;
 
public class 문제5_3 {
 
    public static void main(String[] args) {
        
 
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("전기사용량을 입력하세요(kw) : ");
        int amount = scanner.nextInt(); //전기사용량 입력
        
        
        int basic; //기본요금
        double price; //kw당 요금 * amount
        double tax; //세금
        double total; // 총 요금
        
    
        scanner.close();
    }
 
}
cs

먼저 이렇게 전기사용량을 입력받았구요

변수들을 선언해주었습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import java.util.Scanner;
 
public class 문제5_3 {
 
    public static void main(String[] args) {
        
 
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("전기사용량을 입력하세요(kw) : ");
        int amount = scanner.nextInt(); //전기사용량 입력
        
        
        int basic; //기본요금
        double price; //kw당 요금 * amount
        double tax; //세금
        double total; // 총 요금
        
    
        //price구하기, basic 구하기
        if (amount <= 100) {
            price = (52.0 * amount);
            basic = 370;
        } else if ( amount > 100 && amount <= 200) {
            price = (52.0 * 100+ (88.5 * (amount-100));
            basic = 660;
        } else if (amount > 200 && amount <= 300) {
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * (amount-200));
            basic = 1130;
        }else if (amount > 300 && amount <= 400) {
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * (amount - 300));
            basic = 2710;
        }else if (amount > 400 && amount <= 500){
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * 100)+ (274.3 *(amount - 400));
            basic = 5130;
        }else {
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * 100)+ (274.3 * 100+ (494.0 *(amount - 500));
            basic = 9330;
        }
        
        
        
        
        tax = (basic + price) * 0.09// 세금은 기본요금 + kw당 요금의 9 퍼센트이다.
        total = (int)( basic + price + tax); //total은 double형이니까 정수형으로 바꿔준다.
        System.out.println("전기사용량을 입력하세요(kw) : " + amount);
        System.out.println("이번달 요금은  " + (int)total + "입니다.");
        scanner.close();
    }
 
}
cs

1) if문사용

basic은 기본요금

price는 kw당 요금입니다.

그래서 보시면

amount를 조건문으로 나누었습니다.

amount가 100이 될때까지 기본요금은 370 입니다 

그래서 basic이 370이되었고

 kw당 요금은 간단하게 52.0* amount입니다.

 

두번째 조건 보시면

amount가 그러니까 전기 사용량이 100초과 200이하일때

기본요금은 660이고

kw당 요금은 

100까지는 52*100 이고

101부터는 88.5 * (amount -100) 이겠죠

만약에 120을 썼다 그러면

100까지는 52원을 청구하고

20원은 88.5원씩 20kw를 청구하겠지요.

이런식으로 조건들을 쭉 써줍니다.

 

2)

그리고 tax는 세금인데 퍼센트입니다.

요금나온 것을 다 더하고 9퍼센트를 때려주고요

total은 세금과 기본사용료, kw당 요금 다 더한 값입니다.

total은 double형으로 선언했으니 int형으로 형변환을 해줍니다. 

 

원하는 대로 나오고 있습니다.

 


두번째로 switch문을 사용해보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import java.util.Scanner;
 
public class 문제5_3 {
 
    public static void main(String[] args) {
        
 
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("전기사용량을 입력하세요(kw) : ");
        int amount = scanner.nextInt(); //전기사용량 입력
        
        
        int basic; //기본요금
        double price; //kw당 요금 * amount
        double tax; //세금
        double total; // 총 요금
        
    //switch문 사용        
        if (amount <= 100) {
            basic = 1;
        } else if ( amount > 100 && amount <= 200) {
            basic = 2;
        } else if (amount > 200 && amount <= 300) {
            basic = 3;
        }else if (amount > 300 && amount <= 400) {
            basic = 4;
        }else if (amount > 400 && amount <= 500){
            basic = 5;
        }else {
            basic = 6;
        }
        
        
        switch (basic) {
        //case를 줄이기 위해 위에 if문을 만들었다. 
        //basic으로 case를 나눴다. 
        case 1
            price = (52.0 * amount);
            basic = 370;
            break;
        case 2
            price = (52.0 * 100+ (88.5 * (amount-100));
            basic = 660;
            break;
        case 3:
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * (amount-200));
            basic = 1130;
            break;
        case 4:
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * (amount - 300));
            basic = 2710;
            break;
        case 5:
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * 100)+ (274.3 *(amount - 400));
            basic = 5130;
            break;
        case 6:
            price = (52.0 * 100+ (88.5 * 100+ (127.8 * 100+ (184.3 * 100)+ (274.3 * 100+ (494.0 *(amount - 500));
            basic = 9330;
            break;
 
                }

tax = (basic + price) * 0.09; // 세금은 기본요금 + kw당 요금의 9 퍼센트이다.
total = (int)( basic + price + tax); //total은 double형이니까 정수형으로 바꿔준다.
 
        System.out.println("전기사용량을 입력하세요(kw) : " + amount);
        System.out.println("이번달 요금은  " + (int)total + "입니다.");        scanner.close();
    }
 
}
cs

 

1) switch문을 사용하여 case를 간단하게 나눠주기 위해

basic으로 case를 나누겠습니다.

 

기본요금 case가 1일떄 2일때 이런식으로 나눕니다.

 

2) switch의 조건을 basic으로 두고

case1 일때

amount는 100이하라는 뜻이고

price와 basic을 위의 if문과 같이 만들어주었습니다.

 

다음 코드들은 위와 같습니다.

728x90