中易网

求Java练习的代码!

答案:1  悬赏:40  
解决时间 2021-02-11 07:58
求Java练习的代码!
最佳答案
可能会有BUG,但是大概的思路应该写清楚了。
对于最后的薪金没有做四舍五入处理
包名:com.salary
下面是代码:

WorkTime.java:================================================================
package com.salary;

public class WorkTime {

public static final int NIGHT_WORK_TIME = 6*60;//到6点的分钟数

private int startHour,startMinute,endHour,endMinute;

public WorkTime(int startHour,int startMinute,int endHour,int endMinute){
this.startHour = startHour;
this.startMinute = startMinute;
this.endHour = endHour;
this.endMinute = endMinute;
}


public int getAllWorkTime(){
int beginWorkTime = getMinutes(startHour,startMinute);
int endWorkTime = getMinutes(endHour,endMinute);

if(beginWorkTime == endWorkTime){
return 24*60;
}

if(endWorkTime<beginWorkTime){
endWorkTime+=24*60;
}

int totalWorkTime = endWorkTime-beginWorkTime;

return totalWorkTime;
}


public int getDayWorkTime(){
int dayWorkTime = getAllWorkTime()-getNightWorkTime();
return dayWorkTime;
}


public int getNightWorkTime(){
int beginMinutes = getMinutes(startHour,startMinute);
int endMinutes = getMinutes(endHour,endMinute);

if(endMinutes<=NIGHT_WORK_TIME){
return endMinutes;
}else if(beginMinutes>=endMinutes){
return NIGHT_WORK_TIME;
}
return 0;
}

private int getMinutes(int hour,int minute){
return hour*60+minute;
}

}
SalaryCalculation.java=============================================================
package com.salary;

public abstract class SalaryCalculation {


public abstract double salaryUnit();


public double salaryCalculate(int hour,int minute){
double hourSalary = salaryUnit()*hour;
double minuteSalary = salaryUnit()*(minute/60);
return hourSalary+minuteSalary;
}


public double salaryCalculate(int minutes){
double hourSalary = salaryUnit()*(minutes/60);
double minuteSalary = salaryUnit()*(minutes%60.0/60);
return hourSalary+minuteSalary;
}

}

DaySalary.java===================================================================
package com.salary;


public class DaySalary extends SalaryCalculation{

public double salaryUnit() {
return 3.4;
}

}

NightSalary.java===================================================================
package com.salary;

public class NightSalary extends SalaryCalculation{

public double salaryUnit() {
return 3.9;
}

}
最后是测试类代码==================================================================
package com.salary;

public class Test {

public static void main(String[] args) {

WorkTime workTime = new WorkTime(22, 0, 2, 20);//从晚上22:00点做到凌晨2:20
int dayWorkTime = workTime.getDayWorkTime();//得到白天的工时
int nightWorkTime = workTime.getNightWorkTime();//得到夜间的工时

double daySalary = new DaySalary().salaryCalculate(dayWorkTime);//计算白天的薪金
double nightSalary = new NightSalary().salaryCalculate(nightWorkTime);//计算夜间的薪金

double salary = daySalary+nightSalary;//计算总薪金
System.out.println(salary);
}
}

输出为:16.55
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
谈了两次恋爱了,第二个男友分手的时候,他到
我老爸是个尿毒症患者农村人。透析每个星期2
以界面方式输入一个英文句子,请编写程序查找
磊科无线路由器nw705p辐射大不大,跟别的路由
建筑设计专业考公务员报考什么部门合适?建设
神童内衣厂我想知道这个在什么地方
汽油可以昨消防演练吗
火柴算式2+11=1和1+1+11=1是个错误算式.你只
已过商标异议期的,可不可以对商标提出异议?
菩提阁地址有知道的么?有点事想过去
高碑店金隅汇星苑附近有招商银行吗?
X020/S327(路口)在哪里啊,我有事要去这个地
word文档怎么删除空白页
求大航海时代2的下载地址 一定要能下载的!
桥头镇大洲文化广场从厚街到那里坐什么车
推荐资讯
我老公想把户口迁到我这请问该怎么办
甘肃卓越天赋教育发展有限公司地址在什么地方
博越和明锐那个好
期货开仓一定要有对家吗
风范美容养生馆我想知道这个在什么地方
一个70斤左右的老砗磲原料未打磨雕刻的值多少
宝贝详情页左侧怎么修改啊
怎么将.html格式的文件转化为.mht格式
韭黄是什么,和韭菜有什么区别
双清后要激活手机怎么办
黑腐的多肉土还可以用吗
瑞祥招待所这个地址在什么地方,我要处理点事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?