ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 과제8. 연소득 과세금액 계산 프로그램
    백엔드 스쿨/Java 2023. 11. 13. 21:13

    목적

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

    연소득 금액 입력

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

    종합소득세율표

     

    콘솔 예시

     

    코드 구상

    1. 세율표에 따라 입력한 연 소득의 세금을 따로 계산하여 출력해야함.

    입력한 연 소득을 단계별로 나눈 금액을 저장하고 계산한 금액을 더하여 저장할 변수가 각각 필요함.

    8개 구간으로 나뉘어져 있으며 각 구간마다 필요한 변수의 양이 다름.

    배열을 통해 구간별 금액과 세율, 공제금액을 저장.

    2. 반복문을 통해 각 구간별 세금을 계산하여 출력.

    연 소득이 과세 표준 금액의 어디에 해당하는지 가장 아래단계부터 비교

    단계가 정해지면 그 이전 구간의 경우는 계산할 필요 없이 고정된 값이므로 해당 값을 반복하여 출력.

    3. int의 최대값이 약 21억 정도이므로 소득의 자료형은 long 타입을 필요해 보임.

     

    import java.util.Scanner;
    
    public class JavaStudy08{
        public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		long incomeRange[] = {0L,12000000L,46000000L,88000000L,150000000L,300000000L,500000000L,1000000000L}; // 과세 표준을 저장한 배열
    		
    		long taxSection[] = new long[8]; //구간별 과세 대상 금액을 저장할 배열
    		
    		int taxPercent[] = {6,15,24,35,38,40,42,45}; //세율을 저장한 배열
    		
    		long deduction[] = {0L,1080000L,5220000L,14900000L,19400000L,25400000L,35400000L,65400000L}; //누진공제를 저장한 배열
    		
    		
    		System.out.println("[과세금액 계산 프로그램]");
    		System.out.print("연소득을 입력해 주세요.");
    		long yearIncome = sc.nextLong(); // 숫자 단위가 크므로 long 자료형으로 숫자를 입력받는다.
    		sc.nextLine();
    			
    		int check = 0; //구간 확인용 변수.
    		
    		for(int i=7;i>=0;i--) {
    			if(yearIncome>incomeRange[i]) {
    				if(check==0) {
    					taxSection[i] = yearIncome - incomeRange[i] ; // 연소득이 해당 과세표준보다 높을경우 과세대상 금액 배열애 금액 차를 입력한다. 
    					check = i; //구간을 찾았으므로 변수값을 i값으로 변경
    				}
    				else
    					taxSection[i] = incomeRange[i+1] - incomeRange[i]; // check값이 false가 아닐 경우 이미 이전반복에서 구간을 찾았으므로 해당 구간의 과세금액은 다음 구간과의 차이가 된다.
    			}
    			else
    				taxSection[i] = 0L; // 연소득이 해당 과세표준보다 낮거나 같은경우 해당 구간의 과세금액은 0원이 된다.
    		} //과세 대상 금액 계산을 완료.
    		
    		
    		long totalTax = 0L; // 구간별 세금 총합을 저장하기위한 변수
    		for(int i=0;i<8;i++) {
    			if(taxSection[i]==0)
    				break; // 만약 해당 구간의 과세 대상 금액이 0원일 경우 이후의 구간도 모두 0원이므로 출력을 중단하고 반복문을 빠져나간다.
    			System.out.printf("%12d * %3d%% = %12d\n",taxSection[i],taxPercent[i],taxSection[i]/100*taxPercent[i]);
    			totalTax += taxSection[i]/100*taxPercent[i]; // 계산한 세금을 저장 
    		}
    		System.out.println();
    		System.out.printf("[세율에 의한 세금]:         %12d\n",totalTax); // 총 세금을 출력
    		System.out.printf("[누진공제 계산에 의한 세금]:%12d\n",(yearIncome/100*taxPercent[check])-deduction[check]); // 누진 공제방식으로 세금을 계산하여 출력.
        }
    }

    '백엔드 스쿨 > Java' 카테고리의 다른 글

    자료구조 Queue  (0) 2023.11.18
    자료 구조 - Stack  (0) 2023.11.16
    과제7. 로또 당첨 프로그램  (0) 2023.11.13
    과제6. 가상 선거 및 당선 시뮬레이션 프로그램  (0) 2023.11.12
    과제5. 달력 출력 프로그램  (0) 2023.11.12
Designed by Tistory.