为了账号安全,请及时绑定邮箱和手机立即绑定

Java重复比较值与数组双精度并在错误输入后重复

Java重复比较值与数组双精度并在错误输入后重复

Go
胡说叔叔 2022-11-30 11:13:18
当用户输入价值支付率时,它会检查价值支付率与支付率数组。如果正确,那么它会提示用户是否需要完成另一个过程。如果没有,它将去计算。如果支付率错误,则显示错误并要求用户重新输入值。我有问题,在用户按下“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);}结果:
查看完整描述

2 回答

?
隔江千里

TA贡献1906条经验 获得超10个赞

以下代码对我来说很好用:


package mm.com.java.so.test;


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;


public class JavaRepeat {


    public static void main(String[] args) throws IOException {


        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));


        double[] defaultPayRates = { 3.50, 4.00, 4.50, 4.75, 5.00, 5.25, 5.50, 5.75, 6.00 };


        double payRate;

        boolean isValid;

        boolean isContinue;

        String next;

        int workingHour;


        do {


            isValid = false;

            isContinue = false;


            System.out.print("\nEnter hours work : ");


            workingHour = Integer.parseInt(reader.readLine());


            do {


                System.out.print("Enter pay rate: ");


                payRate = Double.parseDouble(reader.readLine());


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


                    if (defaultPayRates[i] == payRate) {

                        isValid = true;

                        // TODO : make calculation here.

                        break;

                    }

                }


                if (!isValid) {

                    System.out.println("You have entered the wrong pay rate. Please try again !!!");

                }


            } while (!isValid);


            do {


                isValid = true;


                System.out.println("\nDo you have any employee to process (Y/N)");


                next = reader.readLine();


                switch (next.toLowerCase()) {

                    case "y":

                        isContinue = true;

                        break;


                    case "n":

                        isContinue = false;

                        break;


                    default:

                        isValid = false;

                        System.out.println("Please use Y or N only.");

                        break;

                }

            } while (!isValid);


        } while (isContinue);


        // TODO : print out calculation here.


        System.out.println("\nCalculation is doing. Please wait...");

    }

}

我的测试结果如下:


Enter hours work : 3

Enter pay rate: 2

You have entered the wrong pay rate. Please try again !!!

Enter pay rate: 5


Do you have any employee to process (Y/N)

y


Enter hours work : 2

Enter pay rate: 5


Do you have any employee to process (Y/N)

z

Please use Y or N only.


Do you have any employee to process (Y/N)

N


Calculation is doing. Please wait...


查看完整回答
反对 回复 2022-11-30
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

仅当is时,您才应该执行该System.out.println("You have entered the wrong pay rate. Please try again");行。 isPayRatefalse


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


查看完整回答
反对 回复 2022-11-30
  • 2 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号