Java Payroll ACME项目,编译问题

时间:2015-09-19 01:09:20

标签: java compilation

我必须创建一个程序,该程序必须包含三个或更多类,包括我的Main类,它将同时运行该类。现在,我有一个名为EmployeeRecord的类,它将为员工信息(员工全名,税号,员工ID和工资)创建数组,另一个名为Payroll的类,这是我遇到的最麻烦的类。在我的if和else if语句中,我在尝试编译说明"不兼容类型时遇到错误:double无法转换为java.util.ArrayList。"我无法理解或找到解决问题的方法。我已经为你发了两个班。感谢。

with multiprocessing.Pool() as pool, open(filename) as f:
    for result in pool.imap_unordered(somefunctionthatprocessesaline, f):
        ... do stuff with one result ...

}

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Date;

/**
 * 
 * @Lab Three
 * @author Joseph Malachosky 
 * @version 9/14/2015
 */
public class Payroll
{
//ArrayLists that will use methods from EmployeeRecords.
ArrayList<String> employeeNames2;
ArrayList<Double> employeeWages2;

ArrayList<Integer> emID = new ArrayList<Integer>();
ArrayList<Double> hours = new ArrayList<Double>();
ArrayList<Double> totalPay = new ArrayList<Double>();
//Creating the hours and wages variables.
private double hoursWorked = 0.0;
private double hoursWorked2 = 0.0;
private int weeks = 0;
private String employeeID = "%03d";
private int quit = 1000;
private int i = 0;

Scanner input = new Scanner(System.in);

public void setEmployeePayroll()
{
    // Constructs a new EmployeeRecord.
    EmployeeRecord e = new EmployeeRecord();
    e.setEmployeeInfo();

    employeeNames2 = e.getEmployeeNamesArrayList();
    employeeWages2 = e.getWageArrayList();

    // Local variables used in setEmployeePayroll.
    double totalPay2 = 0.0;
    double totalHours = 0.0;
    double overTime = 0.0;
    double overTime2 = 0.0;

    System.out.println("Please enter ACME employee ID, the week they worked (1 or 2), and the number of hours worked. This information should be entered in the order the names were entered. Enter 0 when you are done inputing information.");

    while(quit != 0)
    {
        quit = input.nextInt();
        if(quit == 0)
        {
            break;
        }

        weeks = input.nextInt();

        if(weeks == 1)
        {
            hoursWorked = input.nextDouble();
        }
        else if(weeks == 2)
        {
            hoursWorked2 = input.nextDouble();
        }

        /*
         * I am checking to see if the employee is going to be paid for overtime and also calculating the pay for both weeks.
         * 1) My first if statement indicates whether or not the employee worked over 40 in week one and week two.
         * 2) My first else if statement indicates whether the employee works more than 40 hours in week two but not week one.
         * 3) My second else if statement indicates whether the employee works more than 40 hours in week one but not in week two.
         * 3) My third else if statement finally indicates that the employee worked over 40 hours in both week one and two.
         */
        if(hoursWorked > 0 && hoursWorked <= 40 && hoursWorked2 > 0 && hoursWorked2 <= 40)
        {
            totalHours = hoursWorked + hoursWorked2;
            hours.add(totalHours);
            totalPay = totalHours * (employeeWages2.get(i - 1));
            totalPay.add(totalPay2);
            hoursWorked = 0.0;
            hoursWorked2 = 0.0;
        }
        else if(hoursWorked2 > 40 && hoursWorked > 0 && hoursWorked <= 40)
        {
            overTime2 = hoursWorked2 - 40;
            totalHours = hoursWorked + hoursWorked2;
            hours.add(totalHours);
            totalPay = totalHours * (employeeWages.get(i - 1)) + (overTime2 * 1.5);
            tPay.add(totalPay);
            hoursWorked = 0.0;
            hoursWorked2 = 0.0;
        }
        else if(hoursWorked > 40 && hoursWorked2 <= 40 && hoursWorked2 > 0)
        {
            overTime = hoursWorked - 40;
            totalHours = hoursWorked + hoursWorked2;
            hours.add(totalHours);
            totalPay = totalHours * (employeeWages.get(i - 1)) + (overTime * 1.5);
            tPay.add(totalPay);
            hoursWorked = 0.0;
            hoursWorked2 = 0.0;
        }
        else if(hoursWorked > 40 && hoursWorked2 > 40)
        {
            overTime = hoursWorked - 40;
            overTime2 = hoursWorked2 - 40;
            totalHours = hoursWorked + hoursWorked2;
            hours.add(totalHours);
            totalPay = totalHours * (employeeWages.get(i - 1)) + (1.5 * (overTime + overTime2));
            tPay.add(totalPay);
            hoursWorked = 0.0;
            hoursWorked2 = 0.0;
        }

        i = terminate;
    }
    System.out.println();
    System.out.println("Employee Number  |  Employee Name    |  Hours Worked  |  Total Pay");
    for(int i = 1; i <= e.getEmployeeNamesArrayList().size(); i++)
    {
        System.out.println(String.format(employeeID, i) + "              | " + emID.get(i - 1) + "        | " + hours.get(i - 1) + "           | " + totalPay.get(i - 1));
    }
}

}

1 个答案:

答案 0 :(得分:0)

你有

 ArrayList<Double> totalPay = new ArrayList<Double>();

然后:

 totalPay = totalHours * (employeeWages2.get(i - 1));

您的编译器是否没有告诉您行号?