![](/img/trans.png)
[英]Is there anyway to shorten this Java code by validating name and weight using only one do...while?
[英]Is there anyway to shorten this Java code?
有没有办法一次性验证身高和体重? 有什么方法可以测试input.hasNextDouble() and height > 5 && height <= 500
在if
条件下在一起?
do {
System.out.print("Height(cm): ");
input.nextLine();
if (input.hasNextDouble()) {
height = input.nextDouble();
if (height > 5 && height <= 500) {
isValid = true;
} else {
System.out.println("Invalid input\nPlease try again\n");
isValid = false;
}
} else {
System.out.println("Invalid input\nPlease try again\n");
isValid = false;
}
} while (!(isValid));
do {
System.out.print("Weight(kg): ");
input.nextLine();
if (input.hasNextDouble()) {
weight = input.nextDouble();
if (weight > 0 && weight <= 500) {
isValid = true;
} else {
System.out.println("Invalid input\nPlease try again\n");
isValid = false;
}
} else {
System.out.println("Invalid input\nPlease try again\n");
isValid = false;
}
} while (!(isValid));
将公共代码定义为单个 function 并使用三元运算符内联 if 条件。
public static double takeInput(String heightOrWeight, int lowConstraint, int highConstraint) {
Scanner input = new Scanner(System.in);
double validDouble = 0;
boolean isValid = false;
while(!(isValid)){
System.out.print(heightOrWeight + ": ");
input.nextLine();
validDouble = input.hasNextDouble() ? input.nextDouble(): Integer.MIN_VALUE;
if (validDouble > lowConstraint && validDouble <= highConstraint) {
isValid = true;
}
if (!isValid) {
System.out.println("Invalid input\nPlease try again\n");
}
}
return validDouble;
}
使用适当的参数调用上述方法。
double height = takeInput("Height(cm)", 5,500);
double weight = takeInput("Weight(kg)", 0,500);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.