Projet Java Payroll ACME, Compilation des problèmes


Je dois créer un programme qui doit inclure trois classes ou plus, y compris ma classe principale qui exécutera la classe simultanément. En ce moment, j'ai une classe appelée EmployeeRecord, qui créera des tableaux pour les informations des employés (nom complet de l'employé, ID fiscal, ID de l'employé et leur salaire), et une autre classe appelée Payroll, qui est la classe que j'ai le plus de problèmes. Dans mes instructions if et else if, je reçois une erreur en essayant de compiler indiquant "types incompatibles: double ne peut pas être converti en java.util.Liste de tableaux."Je ne peux pas très bien comprendre ou trouver une solution pour résoudre le problème. J'ai posté mes deux cours pour vous. Grâce.

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

}

Author: Joseph Malachosky, 2015-09-19

2 answers

Vous avez

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

Puis:

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

Votre compilateur ne vous dit-il pas le numéro de ligne?

 0
Author: DV88, 2015-09-19 01:25:34

J'ai trouvé votre erreur.

Changer:

TotalPay = totalheures * (employeeWages2.get(i - 1));

À:

TotalPay2 = totalheures * (employeeWages2.get(i - 1));

 0
Author: shahril, 2015-09-19 01:44:28