연소득 과세금액 계산 프로그램

- 수행 목적 : Scanner의 입력함수와 조건문 및 반복문과 배열, 함수를 통한 과세 로직 작성

- 간략 소개 : 대한민국 헌법은 국민의 의무와 권리를 규정하고 있습니다. 이중 납세의 의무는 국민의 3대 의무 중 하나입니다. 모든 국민은 1년 동안 열심히 번 소득에 대해서 세금을 납부하여야 합니다. 이런 소득에 대한 소득세율표가 있습니다. 주어진 표를 기준으로 해서 소득에 대한 세금을 구하는 프로그램을 작성해 보세요.

 

※ 필수 준수사항

1. 연소득 금액 입력

2. 주어진 종합소득세율표를 통한 조건 생성

 

설명)

1,000만원 소득인 경우는 과세표준이 1,200만원 이하 이기 때문에 세율을 6%로 계산한 결과인 60만원의 세금이 부과됨

1,500만원 소득의 경우는 과세표준 구간이 15% 세율이기 때문에 15%로 계산하는게 아니라

1,200만원까지는 6%의 세율로 계산하고 그 외만 15%로 계산해서 합계를 냄.

이 때, 누진공제 금액을 이용할 수 있는데 1,500만원에 15% 세율로 계산한 금액 225만원에 누직공제 금액을 빼면

세금계산과 동일한 금액입니다.

 


작성 코드

// 연소득 과세금액 계산 프로그램

import java.util.Scanner;

public class Income {
    public static int resulttax(int money) { //세율에 의한 세금 함수

        // {}이하 - {}초과 계산
        int[] taxbase = {12000000, 34000000, 42000000, 62000000, 150000000, 200000000, 500000000, 1000000000};
        int [] tariff = {6, 15, 24, 35, 38, 40, 42, 45}; // 세율
        int totaltax = 0; // 세금 총합
        int change = money; // 남은 돈
        int i = 0;

        while(change-taxbase[i]>0) {
            totaltax = totaltax + (int)(taxbase[i] * tariff[i])/100;
            change = change - taxbase[i];
            System.out.printf("\t%d * %d%% = \t%d\n", taxbase[i], tariff[i], (taxbase[i]*tariff[i])/100);
            i++;
        }
        totaltax = totaltax + (int)(change * tariff[i])/100;
        System.out.printf("\t%d * %d%% = \t%d\n", change, tariff[i], (change*tariff[i])/100);

        return totaltax;
        }

    public static int resulttax2(int money) { //누진공제에 의한 세금 함수

        if(money>12000000 && money<=46000000)
        {
            money *= 0.15;
            money -= 1080000;

        } else if (money>46000000 && money<=88000000) {
            money *= 0.24;
            money -= 5220000;

        } else if (money>88000000 && money<=150000000) {
            money *= 0.35;
            money -= 14900000;
        } else if (money>150000000 && money<=300000000) {
            money *= 0.38;
            money -= 19400000;
        } else if (money>300000000 && money<=500000000) {
            money *= 0.40;
            money -= 25400000;
        } else if (money>500000000 && money<=1000000000) {
            money *= 0.42;
            money -= 35400000;
        } else if (money>1000000000) {
            money *= 0.45;
            money -= 65400000;
        }

        return money;
    }

    public static void main(String[] args)
    {
        int money = 0;
        int numoney = 0;
        int etc = 0;

        System.out.println("[과세금액 계산 프로그램]");
        System.out.print("연소득을 입력해 주세요.:");
        Scanner sc = new Scanner(System.in);
        money = sc.nextInt();
        etc = money;

        if(etc <= 12000000)
        {
            money = (etc * 6) / 100;
            System.out.printf("%d  *  6%%\n", etc);
        }
        else {
            money = resulttax(etc); // 세율에 의한 세금 함수 resulttax
            numoney = resulttax2(etc); // 누진공세 계산에 의한 세금 함수 resulttax2
        }
        System.out.println();
        System.out.printf("[세율에 의한 세금]:%19d\n" , money);
        System.out.printf("[누진공제 계산에 의한 세금]:%12d" , Math.round(numoney));
    }
}

https://gist.github.com/coha96/69001e07de9acb8c200398a4641fd768