根据婚姻状况和收入查找所得税-java

根据婚姻状况和收入查找所得税-java,java,Java,因此,我的程序根据你的婚姻状况和收入计算所得税,这是一项课堂作业,老师希望我们以某种方式来计算所得税,这就是为什么我用final和其他东西定义常数的原因。不管怎样,我编译了我的程序,没有语法错误,但是当我运行程序时,计算就停止了 例如,当我输入我的婚姻状况为单身,然后输入我的收入为10000时,它给我的值为1000,而它应该是1100 感谢您的帮助 import java.util.Scanner; public class Tax { public static void main(Str

因此,我的程序根据你的婚姻状况和收入计算所得税,这是一项课堂作业,老师希望我们以某种方式来计算所得税,这就是为什么我用final和其他东西定义常数的原因。不管怎样,我编译了我的程序,没有语法错误,但是当我运行程序时,计算就停止了

例如,当我输入我的婚姻状况为单身,然后输入我的收入为10000时,它给我的值为1000,而它应该是1100

感谢您的帮助

import java.util.Scanner;

public class Tax
{ 
public static void main(String[] args)
{

  Scanner keyboard = new Scanner(System.in);
  double tax = 0, taxIncome = 0;
  final double FIRST_SINGLE_TAX = .10;
  final double FIRST_MARRIED_TAX = .10;
  final double SECOND_SINGLE_TAX = .15;
  final double SECOND_SINGLE_VALUE = 800;
  final double SECOND_MARRIED_TAX = .15;
  final double SECOND_MARRIED_VALUE = 1600;
  final double THIRD_SINGLE_TAX = .25;
  final double THIRD_SINGLE_VALUE = 4400;
  final double THIRD_MARRIED_TAX = .25;
  final double THIRD_MARRIED_VALUE = 8800;

  System.out.print("Enter your marital status (single or married): ");
  String status = keyboard.nextLine();

  if(!status.equalsIgnoreCase("single") && !status.equalsIgnoreCase("married")) 
  {
     System.out.println("-- illegal marital status --");
     System.exit(0);
  }
  else 
  {
     System.out.print("Enter your taxable income: "); 
     taxIncome = keyboard.nextDouble();
  }

  if (status.equals("single"))

        if (taxIncome >= 0  && taxIncome <= 8000)
        {
           tax = taxIncome * FIRST_SINGLE_TAX;
        }
        else if (taxIncome > 8000 && taxIncome <= 32000)
        {
           tax = (SECOND_SINGLE_VALUE + (taxIncome - 8000) * SECOND_SINGLE_TAX);
        }
        else if (taxIncome >= 32000)
        {
           tax = (THIRD_SINGLE_VALUE + (taxIncome - 32000) * THIRD_SINGLE_TAX);
        }
        else 
        {
        System.out.print(" -- illegal income --");
        }

  else if(status.equals("married"));

       if (taxIncome >= 0 && taxIncome <= 16000)
       {
          tax = taxIncome * FIRST_MARRIED_TAX;
       }
       else if (taxIncome > 16000 && taxIncome <= 64000)
       {
          tax = (SECOND_MARRIED_VALUE + (taxIncome - 16000) * SECOND_MARRIED_TAX);
       }
       else if (taxIncome >64000) 
       {
          tax = (THIRD_MARRIED_VALUE + (taxIncome - 64000) * THIRD_MARRIED_TAX); 
       }
       else 
       {
          System.out.print (" -- illegal income --");
       }

       System.out.printf("Your income tax is $%.2f", tax);

 }
}

作为一名新程序员,给您一个很好的建议:

1了解如何使用调试器, 2学习如何设置断点,调查局部变量和 3了解如何添加和调查日志。 一旦你这样做了,你就会意识到问题在于这句话:

否则,如果身份相同,则结婚; 您基本上终止了else语句,这意味着else什么也不做,因此,您的纳税价值被以下行覆盖:

tax = taxIncome * FIRST_MARRIED_TAX;
如果。。。结束你的下一个陈述{},你就没事了

//... 如果条件 否则,如果status.equals已婚{ 如果taxIncome>=0&&taxIncome 16000&&taxIncome 64000{ 税=第三方已婚价值+税收入-64000*第三方已婚税; }否则{ System.out.print-非法收入-; } }
你试过调试它吗?为什么你认为正确的值应该是1100美元?0.1×10000=1000.