Java - 使用If和if else语句的简单税计算器(2)

时间:2016-02-26 03:57:34

标签: java if-statement

我的代码存在问题:

  • TotalTax = calculateAndPrintTax(Income); - >用红色下划线
  • else ((Income > 200000)) - >显示错误" ';' is expected"

这是代码....

import java.util.Scanner;

public class PracticeProbLab4 {


 /**
  * @param args the command line arguments
  */

 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  System.out.println("Enter your Income: ");
  String In = sc.nextLine();
  Double Income = Double.parseDouble(In);

  double TotalTax;
  TotalTax = calculateAndPrintTax(Income);
  System.out.println("Your taxes are: " + TotalTax);
 }

 static double calculateAndPrintTax(double Income, double TotalTax) {
  double tax;
  double difftax1;
  double difftax2;
  double difftax3;
  double difftax4;

  if ((Income >= 45282) && (Income <= 200000)) {
   if (Income <= 45282) {
    tax = 45282 * 0.15;
    TotalTax = tax;
   } else if (Income > 45282 && Income <= 90653) {
    tax = 45282 * 0.15;
    difftax1 = (Income - 45282) * .205;
    TotalTax = tax + difftax1;
   } else if ((Income > 90563) && (Income <= 140388)) {
    tax = 45282 * 0.15;
    difftax1 = (Income - 45282) * .205;
    difftax2 = (Income - 90563) * 0.26;
    TotalTax = tax + difftax1 + difftax2;
   } else if ((Income > 140388) && (Income <= 200000)) {
    tax = 45282 * 0.15;
    difftax1 = (Income - 45282) * .205;
    difftax2 = (Income - 90563) * 0.26;
    difftax3 = (Income - 140388) * 0.29;
    TotalTax = tax + difftax1 + difftax2 + difftax3;
   } else if ((Income > 200000)) {
    tax = 45282 * 0.15;
    difftax1 = (Income - 45282) * .205;
    difftax2 = (Income - 90563) * 0.26;
    difftax3 = (Income - 140388) * 0.29;
    difftax4 = (Income - 200000) * 0.33;
    TotalTax = tax + difftax1 + difftax2 + difftax3 + difftax4;
   } else((Income > 200000)) {
    tax = 45282 * 0.15;
    difftax1 = (Income - 45282) * .205;
    difftax2 = (Income - 90563) * 0.26;
    difftax3 = (Income - 140388) * 0.29;
    difftax4 = (Income - 200000) * 0.33;
    TotalTax = tax + difftax1 + difftax2 + difftax3 + difftax4;

   }
   return TotalTax;
  }
 }
}

2 个答案:

答案 0 :(得分:3)

您的第一个问题是由于您正在呼叫的方法的签名。

static double calculateAndPrintTax(double Income, double TotalTax)期望将两个双打传递给它。您尝试只发送一个。

TotalTax = calculateAndPrintTax(Income); // you need another double value.

但首先是不必要的。您尝试将总税金转移到计算总税额的方法。事实上,在分配新值之前,您甚至不会使用它可能拥有的值。因此,从方法的签名中删除它以使其成为...

calculateAndPrintTax(double Income) {
    // ...and add...
    double TotalTax = 0;
}

...在顶部替换你传递的那个。并像你原来那样打电话。

TotalTax = calculateAndPrintTax(Income);

这实际上不是你最好的选择,但改变你在这个答案中的内容会太多。

第二个问题是它的建议; else/if有一个条件,而不是典型的else。因此,要么将其设为if/else,要么删除条件。我猜测后者可能更合适,因为它与上面if/else中的条件完全相同。

与您的问题没有直接关系的附加说明 - 我认为仔细查看代码并注意其中有多少是重复的并尝试找出使其更简洁的方法是明智的。

答案 1 :(得分:2)

非常简单的错误;

static double calculateAndPrintTax(double Income, double TotalTax)calculateAndPrintTax方法的签名,您应该为其提供两个double值。

其他问题是在else克劳斯,你没有给出任何条件。您应该使用else if(condition)