2 qq 33547239 qq_33547239 于 2016.03.20 02:07 提问

一个简单的Java 计算问题

输出结果总是0,大牛们,可不可以告诉我错在哪里了!代码如下
package HelloWorld;import java.util.Scanner;public class Tax { public static void main(String[] args) { double a = 0.0,b=0.0;//定义工资为a,个人所得税为b; System.out.println("请输入您的月工资,我们将严密计算您的个人所得税!"); Scanner sc=new Scanner (System.in); a=sc.nextDouble(); String str = ""; switch (str) { case "1": if(3500.0<=a&&a<=5000.0){ }else b=(a-3500.0)*0.03; System.out.println("您每月应缴纳个人所得税为:"+b); break; case "2": if (5000.0<=a&&a<=8000.0){ }else b=(5000.0-3500.0)*0.03+(a-5000.0)*0.10; System.out.println("您每月应缴纳个人所得税为:"+b); break; case "3": if (a>=8000.0){ }else b=(5000-3500)*0.03+(8000-5000)*0.10%+(a-8000)*0.20; System.out.println("您每月应缴纳个人所得税为:"+b); break; default: System.out.println("您每月应缴纳个人所得税为:0"); } }}
/*程序要求:计算出个人的所得税的应缴纳的值,月工资低于3500,不用缴纳个人所得税; * 个人所得税计算公式:Tax(3500~5000)=(收入-3500)*3%;Tax(5000~8000)=(5000-3500)*3%+(收入-5000)*10%; * Tax(>8000)=(5000-3500)*3%+(8000——5000)*10%+(收入-8000)*20%; *程序思路:使用switch结构,对应三种情况; */

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.20 06:59
已采纳

switch case根本用不到,去掉,保留你的if判断即可,str也用不到。

haifeng308
haifeng308   2016.03.20 05:08

你的str没赋值,默认了空字符串,直走最后的default

error395
error395   2016.03.20 09:07

自己跟着程序手动运行一遍,你会发现前面输入的a根本没用到,switch里面的是你定义的一个空字符串,另外,
String str = ""; //在内存里分配了一块区域,里面放了一个 "" 空字符串。
String str = null; //在内存里分配了一块区域,里面放了一个 null ;
String str ; //没有在内存里给分配相应的区域,必须要赋值才可以使用。
这三个你要弄清楚。

qq_33547239
qq_33547239 666
一年多之前 回复
qq_33547239
qq_33547239   2016.03.20 02:26

图片说明图片说明

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.03.20 09:43

首先,你的switch(str),而str=""初始直接是空字符串,所以直接走入了default分支了,当然就是0了啊。
其次,贴代码时直接贴代码,图片、或者无代码格式的文本很不好阅读啊,如果有人想帮忙测试验证下代码,还得敲代码多麻烦啊。

qq_33547239
qq_33547239 会注意的
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!