簡體   English   中英

Java Payroll ACME 項目,編譯問題

[英]Java Payroll ACME Project, Compiling problems

我必須創建一個程序,該程序必須包含三個或更多類,包括我的 Main 類,它將同時運行該類。 現在,我有一個名為 EmployeeRecord 的類,它將為員工信息(員工全名、稅號、員工 ID 和他們的工資)創建數組,以及另一個名為 Payroll 的類,這是我遇到的最麻煩的類. 在我的 if 和 else if 語句中,我在嘗試編譯時收到錯誤,指出“不兼容的類型:double 無法轉換為 java.util.ArrayList”。 我無法完全理解或找到解決問題的方法。 我已經為你發布了我的兩個課程。 謝謝。

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));
    }
}

}

import java.util.Scanner;
import java.util.ArrayList;
/**
 * Creating the objects and getMethods for each item that is stored in EmployeeRecord.
 * @Lab Three
 * @author Joseph Malachosky 
 * @version 9/14/2015
 */
public class EmployeeRecord
 {
/*
 * Creating the array and instance variables for EmployeeRecord consisting
 * of TaxID numbers, Employee Names, Wages, Employee ID numbers and hours worked.
 */
ArrayList<String> employeeNames = new ArrayList<String>();
ArrayList<String> taxIDList = new ArrayList<String>();
ArrayList<Double> employeeWages = new ArrayList<Double>();

Scanner input = new Scanner(System.in);

private String employeeID = "%03d";
private String employeeFullName = " ";
private String taxID = " ";
private double wage = 0.0;
//Adding employees.
public void setEmployeeInfo()
{
    System.out.println("Please enter the full names of each ACME employee, their employee tax ID, and their employee wage rate. Press Q when you are done entering employee information.");

    while(employeeFullName != "Q")
    {
            employeeFullName = input.next();
            if(employeeFullName == "Q")
            {
            break;
            }
            taxID = input.next();
            wage = input.nextDouble();

            employeeNames.add(employeeFullName);
            taxIDList.add(taxID);
            employeeWages.add(wage);

            System.out.println("Employee ID  |  Employee Name        |  Tax ID          |  Wage");
            for(int i = 1; i <= employeeNames.size(); i++)
            {
                System.out.printf(String.format(employeeID, i) + "          | " + employeeNames.get(i - 1) + "              | " + taxIDList.get(i - 1) + "          | " + "%1.2f",employeeWages.get(i - 1));
                System.out.println();
            }
    }
}

/**
 * Creating a method that returns the employee ArrayList employeeName.
 */
public ArrayList<String> getEmployeeNamesArrayList()
{
    return employeeNames;
}

/**
 * Creating a method that returns the employee's Tax ID ArrayList taxIDList.
 */
public ArrayList<String> getTaxIdsArrayList()
{
    return taxIDList;
}

/**
 * Creating a method that returns the wages ArrayList 
 */
public ArrayList<Double> getWageArrayList()
{
    return employeeWages;
}

}

你有

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

進而:

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

你的編譯器沒有告訴你行號嗎?

我發現了你的錯誤。

改變:

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

到:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM