A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 葛迅 中级黑马   /  2013-3-29 20:48  /  1277 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 葛迅 于 2013-3-29 21:07 编辑

希望有大神粗线 用switch 替代下列If语句 重新编写 感激不尽!
PS:有志同道合者一起参加 6月7号的云计算大会吗?
  1. class Tax
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Scanner input = new Scanner(System.in);
  6.                 //提示用户输入合适的身份
  7.                 System.out.print("0-单身纳税人,1-已婚共同纳税人,\n"+"2-已婚单独纳税人,3-家庭户主纳税人\n"+"输入对应的身份:");
  8.                 int status = input.nextInt();
  9.                
  10.                 //提示用户输入 收入
  11.                 System.out.print("Enter the taxable in come:");
  12.                 double income = input.nextDouble();
  13.                
  14.                 //计算税率
  15.                
  16.                 double tax = 0;
  17.                
  18.                 if (status == 0)
  19.                 {
  20.                         if (income <= 8350)
  21.                                 tax = income * 0.10;
  22.                         else if (income <= 33950)
  23.                                 tax = 8350 * 0.10 + (income - 8350)*0.15;
  24.                         else if (income <= 82250)
  25.                                 tax = 8350 * 0.10 + (33950 -8350) * 0.15+ (income - 33950) * 0.25;
  26.                         else if (income <= 171550)
  27.                                 tax = 8350 * 0.10 + (33950 -8350) * 0.15+ (82250 - 33950) * 0.25+(income - 82250)*0.28;
  28.                         else if (income <= 372950)
  29.                                 tax = 8350 * 0.10 + (33950 -8350) * 0.15+ (82250 - 33950) * 0.25+(171550 - 82250)*0.28+(income-171550) * 0.33;
  30.                         else
  31.                                 tax = 8350 * 0.10 + (33950 -8350) * 0.15+ (82250 - 33950) * 0.25+(171550 - 82250)*0.28+(372950-171550) * 0.33+
  32.                                 (income - 372950) * 0.35;
  33.                 }
  34.                
  35.                 else
  36.                 {
  37.                         System.out.println("Error:invalid status");
  38.                         System.exit(0);
  39.                 }
  40.                
  41.                
  42.                
  43.                 System.out.println("Tax is"+(int)(tax * 100)/100.0);
  44.                
  45.         }
  46. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

3 个回复

倒序浏览
switch()语句只能判断固定值,对这种区间的值是不能进行判断的
switch()没有这个用法
switch()里面的条件只能是基本数据类型或是枚举 不能这样区间值判断

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
我手心里的宝 发表于 2013-3-29 20:55
switch()语句只能判断固定值,对这种区间的值是不能进行判断的
switch()没有这个用法
switch()里面的条件只 ...

我还是没学好  回去继续看!
回复 使用道具 举报
switch虽然不能处理区间数据   但是还是有办法转化的   

之前看过一个类似的题目   是c语言里的

比如8350减去起征点   除以5000  6000的   取整就变成1了,之后的类推。

但还是离不了if的辅助。

就我学过的知识来看  这是比较好的处理办法了。 不用纠结用switch了。。。

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马