求Java练习的代码!
答案:1 悬赏:40
解决时间 2021-02-11 07:58
- 提问者网友:北故人
- 2021-02-10 23:47
求Java练习的代码!
最佳答案
- 二级知识专家网友:花一样艳美的陌生人
- 2021-02-11 00:00
可能会有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
对于最后的薪金没有做四舍五入处理
包名: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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯