本次用到的是加薪的例子:
员工加薪:
员工一年最多只能申请加薪四次,
加薪后的工资不能高于20000元
package case_learning;
public class Employee {
private int salary = 3000;//设置基本工资为3000
private int appealCount = 0;//申请加薪的次数
public void addSalary(int alpha) //加薪的方法,参数为申请的加薪金额
{
//this区分对象是局部/全局 /"++this……"方法addSalary被调用一次,申请就增加一次
if(this.salary+alpha<20000&&++this.appealCount<=4)
{
this.salary += alpha;
System.out.println("加薪申请成功!当前薪水:"+this.salary);
}
else
{
System.out.println("加薪申请失败!");
}
}
public static void main(String[] args) {
Employee emp = new Employee();
emp.addSalary(5000);
emp.addSalary(5000);
emp.addSalary(5000);
emp.addSalary(5000);
}
}
超出薪资限额
加薪申请成功!当前薪水:8000
加薪申请成功!当前薪水:13000
加薪申请成功!当前薪水:18000
加薪申请失败!
更改申请金额:
public static void main(String[] args) {
Employee emp = new Employee();
emp.addSalary(2000);
emp.addSalary(2000);
emp.addSalary(2000);
emp.addSalary(2000);
emp.addSalary(2000);
}
超出申请次数:
加薪申请成功!当前薪水:5000
加薪申请成功!当前薪水:7000
加薪申请成功!当前薪水:9000
加薪申请成功!当前薪水:11000
加薪申请失败!
但是 更改申请金额如下的时候:
public static void main(String[] args) {
Employee emp = new Employee();
emp.addSalary(5000);
emp.addSalary(5000);
emp.addSalary(5000);
emp.addSalary(5000);
emp.addSalary(1000);
}
结果为:
加薪申请成功!当前薪水:8000
加薪申请成功!当前薪水:13000
加薪申请成功!当前薪水:18000
加薪申请失败!
加薪申请成功!当前薪水:19000
在申请第四次超出限额失败后第五次依然可以成功 于是,出现了bug
断点调试,在这里右击鼠标插入断点:
if(this.salary+alpha<20000&&++this.appealCount<=4)
只需要把加薪方法中的代码改为:
public void addSalary(int alpha) //加薪的方法,参数为申请的加薪金额
{
//this区分对象是局部/全局 /"++this……"方法addSalary被调用一次,申请就增加一次
//if(this.salary+alpha<20000&&++this.appealCount<=4)
if (++this.appealCount>4)
{
System.out.println("到达最大申请次数,加薪失败!");
return; //终止
}
if(this.salary+alpha<20000)
{
this.salary += alpha;
System.out.println("加薪申请成功!当前薪水:"+this.salary);
}
else
{
System.out.println("加薪申请失败!");
}
}
运行结果:
加薪申请成功!当前薪水:8000
加薪申请成功!当前薪水:13000
加薪申请成功!当前薪水:18000
加薪申请失败!
到达最大申请次数,加薪失败!
可以再次按上面断点调试的方法走一遍运行过程(自行完成)
注意:第一次写完代码的时候务必要使用断点调试跑一边流程 java、js、存储过程皆可使用断点调试。