为什么加薪将输出显示为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();
}
}
答案 0 :(得分:1)
问题有两个:
编写double salary=30000.00;
时,创建了一个新的局部变量。这不是这里的主要问题,但是它会导致您稍后获得不正确的结果,并且会导致与其他修复程序发生冲突。
您实际上从未更改过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();
}
}