首页 > 解决方案 > Java重复比较值与数组双精度并在错误输入后重复

问题描述

当用户输入价值支付率时,它将与支付率数组检查价值支付率。如果正确,它将提示用户是否需要完成另一个过程。如果没有,它将进入计算。

如果支付率错误,则会显示错误并要求用户重新输入值。

我有问题,用户按“Y”后会显示“错误的工资率,请重试”。

public static void main(String[] args) {

    //Scanner
    Scanner read = new Scanner(System.in);

    //Array of payRate Default
    double[] payRateDefault = {3.50, 4.00, 4.50, 4.75, 5.00, 5.25, 5.50, 5.75, 6.00};

    double payRateEntered;
    boolean isPayRate = false;

    char anotherProcess;

    System.out.print("Enter hours work: ");
    int hoursWork = read.nextInt();

    do {
        System.out.print("Enter pay rate: ");
        payRateEntered = read.nextDouble();

        for (int i = 0; i < payRateDefault.length; i++) {

            if (payRateDefault[i] == payRateEntered) {

                //If the payRate is true with array payRateDefault, proceed to ask if you have another employee
                System.out.println("Do you have any employee to process (Y/N)");
                anotherProcess = read.next().charAt(0);
                isPayRate = true;

                //Check if Y or N
                switch (anotherProcess) {
                    case 'Y':
                        //Proceed back to prompt user to enter pay rate

                        break;
                    case 'N':
                        //Proceed to calculation

                        break;
                    default:
                        //If wrong input
                        System.out.println("Please use Y or N only");
                        break;
                }
            } else {
                isPayRate = false;
            }
        }
        System.out.println("You have entered the wrong pay rate. Please try again");
    } while (!isPayRate);
}

结果:

在此处输入图像描述

标签: java

解决方案


您应该执行该System.out.println("You have entered the wrong pay rate. Please try again");行,仅当 isPayRateis false

boolean finished = false;
do {
    System.out.print("Enter pay rate: ");
    payRateEntered = read.nextDouble();

    for (int i = 0; i < payRateDefault.length; i++) {

        if (payRateDefault[i] == payRateEntered) {

            //If the payRate is true with array payRateDefault, proceed to ask if you have another employee
            System.out.println("Do you have any employee to process (Y/N)");
            anotherProcess = read.next().charAt(0);
            isPayRate = true;

            //Check if Y or N
            switch (anotherProcess) {
                case 'Y':
                    //Proceed back to prompt user to enter pay rate

                    break;
                case 'N':
                    //Proceed to calculation
                    finished = true;
                    break;
                default:
                    //If wrong input
                    System.out.println("Please use Y or N only");
                    break;
            }
            break;
        } else {
            isPayRate = false;
        }
    }
    if (!isPayRate) {
        System.out.println("You have entered the wrong pay rate. Please try again");
    }
} while (!finished);

推荐阅读