繁体   English   中英

无论如何要缩短这个 Java 代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM