Java 添加从文本文件读取的双精度值
我的项目快完成了,但我需要一些帮助。我需要将加班小时数和工作小时数相加(例如,加班小时数的输出为7,因为一段时间只有两个人工作),但我不知道如何继续。代码如下:Java 添加从文本文件读取的双精度值,java,file-io,text-files,Java,File Io,Text Files,我的项目快完成了,但我需要一些帮助。我需要将加班小时数和工作小时数相加(例如,加班小时数的输出为7,因为一段时间只有两个人工作),但我不知道如何继续。代码如下: static final double OVERTIME_RATE = 1.5; static final double FULL_TIME = 40.0; static double totalGrossAmount; static double grossAmount; static double hourlyRate; st
static final double OVERTIME_RATE = 1.5;
static final double FULL_TIME = 40.0;
static double totalGrossAmount;
static double grossAmount;
static double hourlyRate;
static double hoursWorked;
static double hoursOT;
static double totalHoursOT;
static StringBuffer employeeName;
public static void main(String[] args) throws FileNotFoundException {
reportOverlay();
makeFile();
Scanner scan = new Scanner(new FileReader("Employee.dat"));
while(scan.hasNextLine()) {
employeeName = new StringBuffer(scan.nextLine());
hoursWorked = new Double(scan.nextDouble());
hoursOT = new Double(scan.nextDouble());
hourlyRate = new Double(scan.nextDouble());
scan.nextLine();
double[] pay = processPay(hoursWorked, hoursOT, hourlyRate);
printEmployeeInfo(employeeName, hoursWorked, hoursOT, hourlyRate,
pay[0]);
}
scan.close();
totalAmounts();
}
static void reportOverlay() {
String reportStr = "Employee Hours Hours Pay Amount \n"
+ "Name Worked Overtime Rate Earned \n"
+ "-------------------- -------- --------- -------- --------\n";
System.out.print(reportStr);
}
static double[] processPay(double hoursWorked, double hoursOT, double payRate ) {
grossAmount = 0; // <*********
if(hoursWorked > FULL_TIME)
{
grossAmount = (payRate * FULL_TIME) +
(payRate * OVERTIME_RATE * (hoursWorked - FULL_TIME));
}
else
grossAmount = payRate * hoursWorked;
totalGrossAmount = totalGrossAmount + grossAmount;
return new double[] {grossAmount};
}
static void printEmployeeInfo(StringBuffer employeeName, double hoursWorked,
double hoursOT, double payRate,
double gross)
{ // <*********
System.out.printf("%-20s %8.2f %9.2f %8.2f %8.2f%n", employeeName,
hoursWorked, hoursOT, payRate, gross); // <*********
}
static void totalAmounts() {
System.out.printf("Total %51.2f%n", totalGrossAmount);
System.out.println();
}
static void makeFile() throws FileNotFoundException {
PrintWriter printF = new PrintWriter("Employee.dat");
printF.write("Bugs Bunny\n40 0 15.25\nRoad Runner\n35 0 15.35\n"
+"Wild E. Coyote\n45 5 16.00\nDaffy Duck\n42 2 15.75\n");
printF.close();
}
/*static void totalHours() {
totalHoursOT = hoursWorked - FULL_TIME;
if (totalHoursOT < 0)
{
}
这就是现在的情况,因为我不知道如何添加小时数:
Employee Hours Hours Pay Amount
Name Worked Overtime Rate Earned
-------------------- -------- --------- -------- --------
Bugs Bunny 40.00 0.00 15.25 610.00
Road Runner 35.00 0.00 15.35 537.25
Wild E. Coyote 45.00 5.00 16.00 760.00
Daffy Duck 42.00 2.00 15.75 677.25
Total 2584.50
您已经有了
grossAmount=0
,因此您可以在计算加班时数时执行相同的操作。由于您已经有了一个条件,只需将加班时间添加到“新”变量(例如hours加班
)。计算工作时间和加班时间的方法与计算收入的方法相同。你的思路是对的。为了与产出相匹配,你可能需要将加班总时间和工作总小时数转换为整数。@MikeKoch我该怎么做?我已经为此工作了6个小时了,所以我有点累了。。。你能再详细一点吗?谢谢。@user3606035:您已经有了grossAmount=0
。为小时加班时间创建另一个变量。然后,看看你的一个条件,那就是hourswerworked>FULL\u TIME
。由于这是加班,请计算出他们全职工作的小时数,并将其添加到变量hours加班时间
@user3606035中。没问题。我继续把它作为一个社区维基发布,因为答案已经在这里的评论中解决了。
Employee Hours Hours Pay Amount
Name Worked Overtime Rate Earned
-------------------- -------- --------- -------- --------
Bugs Bunny 40.00 0.00 15.25 610.00
Road Runner 35.00 0.00 15.35 537.25
Wild E. Coyote 45.00 5.00 16.00 760.00
Daffy Duck 42.00 2.00 15.75 677.25
Total 2584.50