Как мне вывести моего стража из цикла? - PullRequest
0 голосов
/ 05 июня 2018

Мне интересно, могу ли я получить некоторую обратную связь о том, как вывести моего стража из цикла, чтобы он не учитывался как часть моего ответа.Я попытался добавить разрыв в цикл while, но он только испортил мою формулу.(То, что я пытаюсь сделать, это заставить систему распечатать все действительные записи для комиссии и предоставить общую сумму для всех записей).Спасибо

public class Commission {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        NumberFormat nf = NumberFormat.getCurrencyInstance();

        int salesPeople = 0;
        double baseSalary = 200;
        double sales = 0;
        double salesTotal = 0;
        double grandTotal = 0;
        while (sales != -999) {
            // ask for the amount of sales
            System.out.println("Enter sales amount (enter -999 to end): ");
            sales = scan.nextDouble();
            salesPeople = salesPeople + 1;

            // do the calculations
            double noCommission = 0;
            double lowCommission = ((sales - 500) * .03);
            double mediumCommission = ((500 * .03) + ((sales - 1000) * .05));
            double highCommission = ((500 * .03) + (2000 * .05) + ((sales - 3000) * .08));

            double commission = 0;

            if (sales < 500)
                commission = noCommission;
            else if (sales > 500 && sales < 1000)
                commission = lowCommission;
            else if (sales > 1000 && sales < 3000)
                commission = mediumCommission;
            else if (sales >= 3000)
                commission = highCommission;

            salesTotal = baseSalary + commission;
            grandTotal = grandTotal + salesTotal;

            System.out.println("You earned " + nf.format(commission)
                + " in commission for a total $" + salesTotal
                + " salary.\n");

        }
        if (sales == -999){
            System.out.println("The number of employees is " + salesPeople
                + " and the total payout is " + grandTotal);
        }

    }

}

1 Ответ

0 голосов
/ 05 июня 2018

Проверка значения часового, как только оно введено.Вы подсчитываете количество продаж (не количество сотрудников), и я бы ограничил переменную область (и ползучесть).Что-то вроде

Scanner scan = new Scanner(System.in);
NumberFormat nf = NumberFormat.getCurrencyInstance();
int salesCount = 0;
double grandTotal = 0, baseSalary = 200;
while (true) {
    // ask for the amount of sales
    System.out.println("Enter sales amount (enter -999 to end): ");
    double sales = scan.nextDouble();
    if (sales == -999) {
        break;
    }
    salesCount++;
    double commission = 0;
    if (sales >= 500 && sales < 1000) {
        commission = ((sales - 500) * .03);
    } else if (sales >= 1000 && sales < 3000) {
        commission = ((500 * .03) + ((sales - 1000) * .05));
    } else if (sales >= 3000) {
        commission = ((500 * .03) + (2000 * .05) + ((sales - 3000) * .08));
    }

    double salesTotal = baseSalary + commission;
    grandTotal += salesTotal;

    System.out.println("You earned " + nf.format(commission) 
            + " in commission for a total $"
            + nf.format(salesTotal) + " salary.\n");
}
System.out.println("The number of sales is " + salesCount 
        + " and the total payout is " + nf.format(grandTotal));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...