1

我正在编写一个计算所得税的程序,该程序会根据您的个人收入增加税额。我在“退税”行不断收到错误“可变税可能尚未初始化”;但我不确定为什么。到目前为止,这是我的代码:

import java.util.Scanner;  //Needed for the Scanner Class
/**
 * Write a description of class IncomeTax here.
 * @author 
 * 11/30/2012
 * The IncomeTax class determines how much tax you owe based on taxable income.
 */
 /**
 * The getTax returns the tax for the income.
 */
public double getTax() {
    double tax;
    if (income <10000.0) {
        tax = 0.10;
    }
    else {
        if (income > 10001.0 && income < 30000.0) {
            tax = 0.15;
        }
        else {
            if (income > 30001.0 && income < 60000.0) {
                tax = 0.25;
            }
            else {
                if (income > 60001.0 && income < 130000.0) {
                    tax = 0.28;
                }
                else {
                    if (income > 130001.0 && income < 250000.0) {
                        tax = 0.33;
                    }
                    else {
                        if (income > 250001.0) {
                            tax = 0.35;
                        }
                    }
                }
            }
        }
   }
   return tax;
}


/** 
 * The constructor accepts an argument for the income field.
 */
public IncomeTax(int i)
{
  income = i;
}
/**
 * The setIncome method accepts an argument for the income field.
 */
public void SetIncome(int i) {
    income = i;
}
/**
 * The getIncome method returns the income field.
 */
public int getIncome() {
    return income;
}

我还没有完成,我仍然需要为用户编写代码以实际输入他们的信息进行计算,但我不想在不先修复退税行的情况下继续往下走。

4

4 回答 4

3
double tax;

您需要初始化局部变量。

例子:

double tax=0.0;
于 2012-11-30T21:49:10.243 回答
3

您需要初始化tax

double tax = 0.0;
于 2012-11-30T21:49:18.557 回答
1

简短的回答

因为您可能没有通过任何if条件,所以不能保证设置tax. 利用:

double tax = 0.10;

长答案

你有很多冗余代码。您可以通过以下方式删除很多内容:

public static double getTax(double income)
{
  double tax = 0.10;
  if (income > 250000.0) {
    tax = 0.35;
  } else if(income > 130000.0) {
    tax = 0.33;
  } else if(income > 60000.0) {
    tax = 0.28;
  } else if(income > 30000.0) {
    tax = 0.25;
  } else if(income > 10000.0) {
    tax = 0.15;
  }
  return tax;
}

这样你就不需要检查不可能是真的事情,并且通过使用else if代码不会每次都缩进。干杯! 此外,通过传递参数并创建函数static,您可以让自己在其他地方使用该函数,如果您需要的话。

于 2012-11-30T21:54:19.223 回答
0

是的,您需要按照其他答案中的说明初始化变量。或者,如果您希望 tax 能够为 null,您应该使用 java 对象而不是原始对象。

Double tax = null;
于 2012-11-30T21:53:28.033 回答