一个简单的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结构,对应三种情况; */

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

图片说明图片说明

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

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

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