Java 写一个计算所得税的方法。变量未初始化
我正在写一个基于工资总额和受抚养人数量计算所得税的方法。当我尝试编译以下代码时,我的dTaxOnIncome变量没有初始化Java 写一个计算所得税的方法。变量未初始化,java,if-statement,methods,Java,If Statement,Methods,我正在写一个基于工资总额和受抚养人数量计算所得税的方法。当我尝试编译以下代码时,我的dTaxOnIncome变量没有初始化 public static double incomeTax(double gross, int dependents) { double dTaxOnIncome; // holds the calculated income tax. if(gross >= 10000 &am
public static double incomeTax(double gross, int dependents)
{
double dTaxOnIncome; // holds the calculated income tax.
if(gross >= 10000 && dependents == 0)
{
dTaxOnIncome = gross * .25;
}
else
{
if((gross >= 10000) && ((dependents >= 1 && dependents <= 4)))
{
if(dependents == 1)
{
dTaxOnIncome = gross * .24;
}
else
{
if(dependents == 2)
{
dTaxOnIncome = gross * .23;
}
else
{
if(dependents == 3)
{
dTaxOnIncome = gross * .22;
}
else
{
if(dependents == 4)
{
dTaxOnIncome = gross * .21;
}
else
{
if(dependents == 5)
{
dTaxOnIncome = gross * .205;
}
else
{
if(dependents == 6)
{
dTaxOnIncome = gross * .20;
}
else
{
if(dependents > 6)
{
dTaxOnIncome = gross * .18;
}
else
{
}
}
}
}
}
}
}
}
}
return dTaxOnIncome;
}// end incomeTax (double, int)
public static double incomeTax(双总、整数相关)
{
double dTaxOnIncome;//保存计算所得税。
如果(总人数>=10000&&dependents==0)
{
dTaxOnIncome=总收入*.25;
}
其他的
{
如果((总数>=10000)和((受抚养人>=1和受抚养人6)
{
dTaxOnIncome=总收入*.18;
}
其他的
{
}
}
}
}
}
}
}
}
}
返回数据,然后返回;
}//end incomeTax(双精度,整数)
我知道我可以使用if-else语句,但我已经尝试了多种方法来解决这个问题,这似乎是最直接的方法。Java中的局部变量需要隐式初始化才能使用。在您的代码中,您没有预先初始化变量dTaxOnIncome,所以Java尝试查看您是否初始化它但事实证明变量并没有在某些地方初始化,所以Java正在考虑这些情况。在这些执行情况下,访问值是一个问题 您可以在声明中添加一些默认值
这将使您的代码正常工作,如果您不想设置默认值,那么请确保您的变量得到初始化,无论您的程序采用何种执行路径。Java中的局部变量需要得到隐式初始化,然后才能使用。在您的代码中,您没有事先初始化变量DTA,因此Java不会我想看看你以后是否初始化了它,但结果是你的变量在某些地方没有被初始化,所以Java正在考虑这些情况。在这些执行情况下,访问值是一个问题
public static double incomeTax(double gross, int dependents){
double dTaxOnIncome=0.0;
// if gross is less than 10000 there is no tax deduction
if(gross<10000) return dTaxOnIncome;
//gross is larger or equal to 10000
//calculate tax deduction according to number of depedents
if(dependents==0){
dTaxOnIncome = gross * .25;
}
if(dependents==1){
dTaxOnIncome = gross * .24;
}
if(dependents==2){
dTaxOnIncome = gross * .23;
}
if(dependents==3){
dTaxOnIncome = gross * .22;
}
if(dependents==4){
dTaxOnIncome = gross * .21;
}
if(dependents==5){
dTaxOnIncome = gross * .205;
}
if(dependents==6){
dTaxOnIncome = gross * .20;
}
if(dependents>6){
dTaxOnIncome = gross * .18;
}
return dTaxOnIncome;
}
您可以在声明中添加一些默认值
这将使您的代码正常工作,如果您不想设置默认值,那么请确保无论程序采用何种执行路径,您的变量都已初始化。public static double incomeTax(double gross,int dependents){
public static double incomeTax(double gross, int dependents){
double dTaxOnIncome=0.0;
// if gross is less than 10000 there is no tax deduction
if(gross<10000) return dTaxOnIncome;
//gross is larger or equal to 10000
//calculate tax deduction according to number of depedents
if(dependents==0){
dTaxOnIncome = gross * .25;
}
if(dependents==1){
dTaxOnIncome = gross * .24;
}
if(dependents==2){
dTaxOnIncome = gross * .23;
}
if(dependents==3){
dTaxOnIncome = gross * .22;
}
if(dependents==4){
dTaxOnIncome = gross * .21;
}
if(dependents==5){
dTaxOnIncome = gross * .205;
}
if(dependents==6){
dTaxOnIncome = gross * .20;
}
if(dependents>6){
dTaxOnIncome = gross * .18;
}
return dTaxOnIncome;
}
双dTaxOnIncome=0.0;
//如果总额小于10000,则不存在税收扣减
若有(6){
dTaxOnIncome=总收入*.18;
}
返回数据,然后返回;
}
公共静态双incomeTax(双总量,整数受抚养人){
双dTaxOnIncome=0.0;
//如果总额小于10000,则不存在税收扣减
若有(6){
dTaxOnIncome=总收入*.18;
}
返回数据,然后返回;
}
将行编辑为double dTaxOnIncome=0.0;
如果这两个条件都不满足怎么办?应该返回什么值?是什么让您认为Java应该知道该值?不要错误地引用错误消息。这不是它所说的。请再次查看。了解它真正说的是什么,您就有了解决方案。将行编辑为double dTaxOnIncome=0.0;
如果这两个条件都不满足怎么办?应该返回什么值?是什么让你认为Java应该知道这个值?不要错误地引用错误消息。它不是这么说的。再看看。理解它真正说的话,你就有了你的解决方案。“除了最后一个else块以外的所有地方”不是真的,有两种情况下它没有初始化。另一种情况是以下情况为假:if((gross>=10000)和&((dependents>=1&&dependents哦,是的,谢谢你通知我。我从手机上回复了,无法完全看到代码。不客气,但是“代码进入最后一个else块且变量不会初始化的一种情况”仍然有点误导“除最后一个else块外的所有地方”都不正确,有两种情况下它没有初始化。另一种情况是当以下情况为false时:如果((总量>=10000)&&((dependents>=1&&dependents噢,是的,谢谢你提醒我。我在手机上回复,无法完全看到代码。不客气,但是“当你的代码进入最后一个else块时,变量将不会初始化的情况”仍然有点误导