Java 写一个计算所得税的方法。变量未初始化

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

我正在写一个基于工资总额和受抚养人数量计算所得税的方法。当我尝试编译以下代码时,我的dTaxOnIncome变量没有初始化

    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块时,变量将不会初始化的情况”仍然有点误导