java - 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);
}
结果:
解决方案
您应该执行该System.out.println("You have entered the wrong pay rate. Please try again");
行,仅当 isPayRate
is 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);
推荐阅读
- sql - 如何相互比较行并根据条件仅保留一行
- computer-vision - 关于通过appsrc将cv::Mat保存到mp4文件的问题
- c++ - 如何解决预编译头错误
- flutter - Flutter Firestore:如何做类似于 where('fieldName', arrayNotContains: 'something') 的事情?
- r - kable 表未正确显示在 github 上
- arrays - 在 AWK 中打印数组中的所有元素
- elasticsearch - 我如何管理弹性搜索中的布尔查询
- python - 来自JSON的电报python检查键值
- javascript - FullCalendar V3 滚动条上弹出更多事件不起作用
- java - 无法创建到 MySQL 数据库服务器的 JDBC 连接