值未增加

时间:2018-12-18 17:28:18

标签: java

为什么加薪将输出显示为0.0而不是增加价值?

class Dcoder
{ 

    static double salary;

    static double increment;
    public static double calSal()
    {
        salary=30000.00;
        return salary;  
    }
    public static double incSal()
    {
        double salary=30000.00;
        double salary2=5000.00;
        double increment=salary+salary2;
        return increment;
    }
    public static void displaySal()
    {
        String employee="Narrigaadu";
        System.out.println("Salary of "+employee+" is "+salary);
        System.out.println("Increased salary is "+increment);
    }
    public static void main(String[] args)
    {
        calSal();
        incSal();
        displaySal();   
    }      
}

2 个答案:

答案 0 :(得分:1)

问题有两个:

  1. 编写double salary=30000.00;时,创建了一个新的局部变量。这不是这里的主要问题,但是它会导致您稍后获得不正确的结果,并且会导致与其他修复程序发生冲突。

  2. 您实际上从未更改过salary。您计算新数字,将其存储在increment中,然后返回increment。返回并不会更新变量。

您只需要更新salary变量:

public static void incSal()
{
    double salary2 = 5000.00;
    double increment = salary + salary2;

    salary = increment; // Here
}

也可以通过摆脱increment使它更加简洁:

public static void incSal()
{
    double salary2 = 5000.00;

    salary = salary + salary2
    // salary += salary2; // Or, more succinctly
}

我也将返回类型更改为void,因为这是一个有效的函数;没有人希望我能返回一些东西。这不是最佳实践,但是鉴于您如何设置其余的课程,这才是最有意义的。


请注意,在这种情况下,使用static并不合适。我建议查找static的用途,因为它比您在此处使用的用途更小众。

答案 1 :(得分:-1)

尝试此代码,

  class Dcoder
{ 

    static double salary;

    static double increment;
    public static double calSal()
    {
        salary=30000.00;
        return salary;  
    }
    public static double incSal()
    {
        double salary=30000.00;
        double salary2=5000.00;
        increment=salary+salary2;
        return increment;
    }
    public static void displaySal()
    {
        String employee="Narrigaadu";
        System.out.println("Salary of "+employee+" is "+salary);
        System.out.println("Increased salary is "+increment);
    }
    public static void main(String[] args)
    {
        calSal();
        incSal();
        displaySal();   
    }      
}