**8.12(金融应用:计算税款)使用数组重写程序清单3-5

  • 题目
    • 题目描述
    • 程序清单3-5:补充完整版
  • 代码

题目

题目描述

**8.12(金融应用:计算税款)使用数组重写程序清单3-5。
每个纳税人身份都有6种税率,每种税率都应用在某个特定范围内的可征税收入。
比如,对于一个单身纳税人,六种税率可以用下面的数组表示:
double[] rates = {0.10, 0.15, 0.25, 0.28, 0.33, 0.35};
所有纳税人身份针对各个税率的纳税等级可以用一个二维数组表示,如下所示:
int[][] brackets = {
{8350, 39500, 82250, 171550, 372950}, // Single filer(0)
{16700, 69000, 137050, 20885, 372950}, // Married jointly qualifying widow(er)(1)
{8350, 33950, 68525, 104425, 186475}, // Married separately(2)
{11950, 45500, 117450, 190200, 372950}, // Head of household(3)
};
假设单身身份的纳税人的可征税收入是400 000美元,则税收可以如下计算:
tax = brackets[0][0] * rates[0] +
(brackets[0][1] - brackets[0][0]) * rates[1] +
(brackets[0][2] - brackets[0][1]) * rates[2] +
(brackets[0][3] - brackets[0][2]) * rates[3] +
(brackets[0][4] - brackets[0][3]) * rates[4] +
(400000 - brackets[0][4]) * rates[5];

程序清单3-5:补充完整版

import java.util.Scanner;public class QingDan {public static void main(String[] args) {// Create a ScannerScanner input = new Scanner(System.in);// Prompt the user to enter filing statusSystem.out.println("(0-single filer, 1-married jointly or " +"qualifying widow(er), 2-married separately, 3-head of " +"household) Enter the filing status:");int status = input.nextInt();// Prompt the user to enter taxable incomeSystem.out.println("Enter the taxable income:");double income = input.nextDouble();// compute taxdouble tax = 0;if (status == 0) {   // Compute tax for single filersif (income <= 8350)tax = income * 0.10;else if(income <= 33950)tax = 8350 * 0.10 + (income - 8350) * 0.15;else if(income <= 82250)tax = 8350 * 0.10 + (income - 8350) * 0.15 +(income - 33950) * 0.25;else  if(income <= 171550)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +(82250 - 33950) * 0.25 + (income - 82250) * 0.28;else  if(income <= 372950)tax = 8350 * 0.10 + (33950 - 8350) * 0.15 +(82250 - 33950) * 0.25 +(171550 - 82250) * 0.28 +(income - 171550) * 0.33;elsetax = 8350 * 0.10 + (33950 - 8350) * 0.15 +(82250 - 33950) * 0.25 +(171550 - 82250) * 0.28 +(372950 - 171550) * 0.33 + (income - 372950) * 0.35;}else if(status == 1){  // Left as an exercise// Compute tax for married file jointly or qualifying widow(er)}else if(status == 2){  // Left as an exercise}else if(status == 3){  // Left as an exercise}else{System.out.println("Error: invalid status");System.exit(1);}// Display the resultSystem.out.println("Tax is " + (int)(tax * 100) / 100.0);}
}

代码

import java.util.Scanner;public class Test8_12 {public static void main(String[] args) {// Create a ScannerScanner input = new Scanner(System.in);// Prompt the user to enter filing statusSystem.out.println("(0-single filer, 1-married jointly or " +"qualifying widow(er), 2-married separately, 3-head of " +"household) Enter the filing status:");int status = input.nextInt();// Prompt the user to enter taxable incomeSystem.out.println("Enter the taxable income:");double income = input.nextDouble();// compute taxdouble tax = 0;int[][] brackets = {{8350, 39500, 82250, 171550, 372950}, // Single filer(0){16700, 69000, 137050, 20885, 372950},  // Married jointly qualifying widow(er)(1){8350, 33950, 68525, 104425, 186475},   // Married separately(2){11950, 45500, 117450, 190200, 372950},   // Head of household(3)};double[] rates = {0.10, 0.15, 0.25, 0.28, 0.33, 0.35};// Compute tax for single filersif (status >= 0 && status <= 3) {if (income <= brackets[status][0])tax = income * rates[0];else if (income <= brackets[status][1])tax = brackets[status][0] * rates[0] + (income - brackets[status][0]) * rates[1];else if (income <= brackets[status][2])tax = brackets[status][0] * rates[0] + (brackets[status][1] - brackets[status][0]) * rates[1] +(income - brackets[status][1]) * rates[2];else if (income <= brackets[status][3])tax = brackets[status][0] * rates[0] + (brackets[status][1] - brackets[status][0]) * rates[1] +(brackets[status][2] - brackets[status][1]) * rates[2] + (income - brackets[status][2]) * rates[3];else if (income <= brackets[status][4])tax = brackets[status][0] * rates[0] + (brackets[status][1] - brackets[status][0]) * rates[1] +(brackets[status][2] - brackets[status][1]) * rates[2] + (brackets[status][3] - brackets[status][2]) * rates[3] +(income - brackets[status][3]) * rates[4];elsetax = brackets[status][0] * rates[0] + (brackets[status][1] - brackets[status][0]) * rates[1] +(brackets[status][2] - brackets[status][1]) * rates[2] + (brackets[status][3] - brackets[status][2]) * rates[3] +(brackets[status][4] - brackets[status][3]) * rates[4] + (income - brackets[status][4]) * rates[5];} else {System.out.println("Error: invalid status");System.exit(1);}// Display the resultSystem.out.println("Tax is " + (int)(tax * 100) / 100.0);}
}

Java黑皮书课后题第8章:**8.12(金融应用:计算税款)使用数组重写程序清单3-5,每个纳税人身份都有6种税率。每种税率都应用在某个特定范围内的可征税收入相关推荐

  1. Java黑皮书课后题第8章:*8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的。重写该程序,通过检验是否每行、每列、每个小方盒中具有

    *8.24(检验数独的解决方案)程序清单8-4通过检测棋盘上的每个数字是否是有效的,从而检验一个解决方案是否是有效的.重写该程序 题目 题目描述 程序清单8-4 破题 代码 题目 题目描述 *8.24 ...

  2. Java黑皮书课后题第3章:**3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票。程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金

    **3.15(游戏:彩票)修改程序清单3-8,产生三位整数的彩票.程序提示用户输入一个三位整数,然后依照规则判定用户是否赢得奖金 题目 题目概述 破题 代码 题目 题目概述 **3.15(游戏:彩票) ...

  3. Java黑皮书课后题第6章:*6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个

    6.38(生成随机字符)使用程序清单6-10 RandomCharacter中的方法,打印100个大写字母及100个一位数字,每行打印10个 题目 题目描述 程序清单6-10 破题 代码 运行实例 题 ...

  4. Java黑皮书课后题第5章:**5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票。这两位数是不同的

    5.32(游戏:彩票)修改程序清单3-8,产生一个两位数的彩票.这两位数是不同的 题目 题目概述 程序清单3-8(非本题代码) 代码 运行结果 题目 题目概述 5.32(游戏:彩票)修改程序清单3-8 ...

  5. Java黑皮书课后题第3章:3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题。修改这个程序,随机产生一个计算两个小于100的整数的加法问题

    3.10(游戏:加法测试)程序清单3-3随机产生一个减法问题.修改这个程序,随机产生一个计算两个小于100的整数的加法问题 题目 题目概述 参考:程序清单3-3 代码 题目 题目概述 3.10(游戏: ...

  6. Java黑皮书课后题第6章:**6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路

    6.24(显示当前日期和时间)程序清单2-7显示当前时间.改进这个例子,显示当前的日期和时间.程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路 题目 题目描述 2-7显示当前时间 从 ...

  7. Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString()方法分别显示上述日期

    Java黑皮书课后题第9章:*9.3(使用Date类)编写程序创建一个Date对象,设置它的流逝时间分别为...,然后使用toString方法分别显示上述日期 题目 代码 思路 代码 题目 代码 思路 ...

  8. Java黑皮书课后题第1章:1.5(计算表达式)编写程序,显示以下式子的结果

    Java黑皮书课后题第1章:1.5(计算表达式) 题目 题目描述 题目槽点 代码 代码块 代码评析与易错点 方法选用 易错点 非常不舒服的运算符前后空格(对新手来讲) 修改日志 题目 题目描述 编写程 ...

  9. Java黑皮书课后题第1章:*1.11(人口估算)编写一个程序,显示未来5年的每年人口数。假设当前的人口是312 032 486,每年有365天

    Java黑皮书课后题第1章:*1.11(人口估算) 题目 题目描述 破题 代码块 方法评析 为什么print函数内的表达式不能分开 修改日志 题目 题目描述 *1.11(人口估算)编写一个程序,显示未 ...

最新文章

  1. springboot整合Quartz实现动态配置定时任务
  2. console.log 简写
  3. android异步任务详解 AsynTask[转 杨瓦瓦]
  4. 软件测试报告bug统计,软件测试中如何有效地写Bug报告
  5. 计算机最早的运算领域,2013年计算机一级MsOffice模拟试题及答案38
  6. JavaMail中解决中文附件名乱码的问题
  7. java 类 方法继承_java – 在方法重写中返回继承的类而不是超类
  8. 试用期这样做更快通过
  9. oracle数据库初始化参数分类,oracle初始化参数设置
  10. access中case替代方法
  11. L2-016. 愿天下有情人都是失散多年的兄妹-PAT团体程序设计天梯赛GPLT(广度优先bfs)
  12. Tomcat报错:The server does not support version 3.0 of the J2EE Web module specification
  13. 基于深度学习的车型识别APP
  14. 4k电视测试软件64,2017年四款看4k视频软件推荐,智能电视必备!
  15. UG(NX)二次开发 BlockUI 集列表使用方法
  16. python输入城市找省份_python实现城市和省份字典(根据城市判断属于哪个省份)...
  17. html页面中添加分页符,在生成的HTML中插入分页符.doc
  18. STM32超声波模块实验(定时器实现)
  19. 【申博攻略】四.博士申请的个人自述怎么写
  20. 图形商标近似检索-知擎者的 Milvus 实践

热门文章

  1. 基类指针调用派生类函数_C++ 多态性:虚函数--基类与派生类类型转换(第7章 05)例子问题解析(学习笔记:第8章 05)...
  2. intel服务器芯片组介绍,Intel芯片组的简介
  3. 病毒源代码Java_病毒代码_bat病毒代码_java病毒代码(5)
  4. 小a的计算器(牛客签到题A)-简单模拟
  5. 如何选择物联网软件开发供应商
  6. 告警系统的一些痛点思考
  7. J.R.R.托尔金笔下的中土世界与《斗破苍穹》项目实践:从世界观解构入手场景设计
  8. 杨清彦:《像三国》游戏3D动效制作经验分享
  9. 使用NOSQL的MongoDB时建立索引需要注意的几点建议和Explain优化分析
  10. mysql在表的某一位置增加一列、删除一列、修改列名