Узнайте, сколько раз пользователь обрабатывается? - PullRequest
0 голосов
/ 26 ноября 2018

У меня возникли проблемы с частью задания.Я должен увидеть, сколько раз сотрудник обрабатывается в моей программе, после того, как цикл запускается, когда он спрашивает пользователя, хочет ли он обработать другой.Если они вводят y для да, а затем вводят n для завершения после вычисления второго сотрудника.Я хочу сказать, что «Количество сотрудников обработано: 2».Как я мог это сделать?

package paytime;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner scn = new Scanner(System.in);

        String firstName, lastName, choice;
        double hoursWorked, hourlyWage;
        boolean processAnotherEmployee = true;
        Employee one = new Employee();


        while(true)
        {
            if (processAnotherEmployee) 
            {
        System.out.print("Enter Y to process employee or any other key to end: ");
        choice = scn.next();
        if (choice.equalsIgnoreCase("Y"))
        {

        System.out.print("Enter employee number: ");
        int number = scn.nextInt();

        while (!one.findEmpNumber(number))
        {
            System.out.print("Invlaid, enter a proper employee number: ");
            number = scn.nextInt();
        }

        System.out.print("Enter first name: ");
        firstName = scn.next();

        System.out.print("Enter last name: ");
        lastName = scn.next();

        System.out.print("Enter hours worked: ");
        hoursWorked = scn.nextDouble();

        while (hoursWorked < 0)
        {
            System.out.print("Negative hours not allowed. Enter hours worked: ");
            hoursWorked = scn.nextDouble();
        }

        System.out.print("Enter hourly wage: $");
        hourlyWage = scn.nextDouble();

        while (hourlyWage < 0 || hourlyWage > 100)
        {
            System.out.print("Negative wage is not allowed or wage entered is to high. Enter hourley wage: $");
            hourlyWage = scn.nextDouble();
        }
        double overtimeHours = hoursWorked - 40; 
        double overtimeWage = hourlyWage * 1.5;
        System.out.println(" ");

        if (hoursWorked <= 40.0)
        {
        System.out.println("Worker " + number + " Paycheck Information: ");
        System.out.println("Name is: " + firstName + " " + lastName);
        System.out.println("Weekly Pay is: " + one.callWeeklyPay(hoursWorked, hourlyWage));
        System.out.println("Income Taxes is: " + one.callIncomeTax());
        System.out.println("Net Pay is: " + one.callNetPay());
        }
        else if (hoursWorked > 40.0)
        {
        System.out.println("Worker " + number + " Paycheck Information: ");
        System.out.println("Name is: " + firstName + " " + lastName);
        System.out.println("Weekly Pay is: " + one.callWeeklyPay(hoursWorked, hourlyWage));
        System.out.println("Income Taxes is: " + one.callIncomeTax());
        System.out.println("Net Pay is: " + one.callNetPay());

        System.out.println(" ");

        System.out.println("Worker " + number + " Overtime Calculation: ");
        System.out.println("Overtime Pay is: " + one.callOvertimePay(overtimeHours, overtimeWage, hourlyWage, hoursWorked));
        System.out.println("Overtime Income Tax is: " + one.callOvertimeTax());
        System.out.println("Overtime Net Pay is: " + one.callOvertimeNetPay());
        System.out.println("Total Net Pay is: " + one.callTotalNetPay());
        System.out.println(" ");
        }
        }
        else if (!choice.equalsIgnoreCase("Y"))
            {
                processAnotherEmployee = false;
                System.out.println("Total number of Employees processed: ");
                System.out.println(" ");
                System.out.println("End of program");
                break;
            }
            }
        }
    }
} 

и

package paytime;

public class Employee {
    private int empNumbers [] = {101, 103, 106, 109, 110, 113, 116, 118, 120};
    public double weeklyPay, hoursWorked, hourlyWage, incomeTax, netPay, 
            overtimePay, overtimeHours, overtimeWage, overtimeIncomeTax, 
            overtimeNetPay, totalNetPay;

    public boolean findEmpNumber(int number)
    {
        boolean found = false;
        for (int sub = 0; sub < empNumbers.length; sub++)
        {
            if (number == empNumbers[sub])
            {
                found = true;
                break;
            }
        }
        return found;
    }

    private void calculateWeeklyPay(double hoursWorked, double hourlyWage) {
        if (hoursWorked > 40)
        {
            hoursWorked = 40;
            weeklyPay = hoursWorked * hourlyWage;
        }
        else
        {
            weeklyPay = hoursWorked * hourlyWage;
        }
    }

    public double callWeeklyPay(double hoursWorked, double hourlyWage) {
        calculateWeeklyPay(hoursWorked, hourlyWage);
        return weeklyPay;
    }

    private void calculateIncomeTax() {
        if (weeklyPay > 0.0 && weeklyPay <= 300.0)
        {
            incomeTax = weeklyPay * 0.10;
        }
        else if (weeklyPay > 300.1 && weeklyPay <= 400.0)
        {
            incomeTax = weeklyPay * 0.12;
        }
        else if (weeklyPay > 400.1 && weeklyPay <= 500.0)
        {
            incomeTax = weeklyPay * 0.15;
        }
        else if (weeklyPay > 500.1)
        {
            incomeTax = weeklyPay * 0.20;
        }
    }

    public double callIncomeTax() {
        calculateIncomeTax();
        return incomeTax;
    }

    private void calculateNetPay() {
        netPay = weeklyPay - incomeTax;
    }

    public double callNetPay() {
        calculateNetPay();
        return netPay;
    }

    private void calculateOvertimePay(double overtimeHours, double overtimeWage, double hourlyWage, double hoursWorked) {
        overtimePay = overtimeHours * overtimeWage;
    }

    public double callOvertimePay(double overtimeHours, double overtimeWage, double hourlyWage, double hoursWorked) {
        calculateOvertimePay(overtimeHours, overtimeWage, hourlyWage, hoursWorked);
        return overtimePay;
    }

    private void calculateOvertimeTax() {
        overtimeIncomeTax = overtimePay * 0.25;
    }

    public double callOvertimeTax() {
        calculateOvertimeTax();
        return overtimeIncomeTax;
    }

    private void calculateOvertimeNetPay() {
        overtimeNetPay = overtimePay - overtimeIncomeTax;
    }

    public double callOvertimeNetPay() {
        calculateOvertimeNetPay();
        return overtimeNetPay;
    }

    private void calculateTotalNetPay() {
        totalNetPay = netPay + overtimeNetPay;
    }

    public double callTotalNetPay() {
        calculateTotalNetPay();
        return totalNetPay;
    }
}

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете достичь этого, просто имея "int employeeProcessed = 0;"за пределами вашего цикла while добавьте "employeeProcessed ++;"непосредственно после «if (choice.equalsIgnoreCase (« Y »))» », чтобы каждый раз, когда ваша программа запрашивалась для обработки работы, вы добавляете 1 к вашему int, который отслеживает, сколько сотрудников вы обработали.Затем вы можете добавить эту переменную в конец напечатанной строки, чтобы она гласила: «Общее количество обработанных сотрудников:» + employeeProcessed.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...