首页 > 解决方案 > 解释 if 块嵌套

问题描述

这是关于一些家庭作业,我试图制作一个 10 到 40 的范围。代码将接受该范围内的两个输入。然后,该方法将检查两个数字是否在范围内,如果它们在,它将给我两个数字的乘积,如果不是,它应该向我显示一条消息。

我已经为此工作了很长时间,但我无法让它工作我是一个完整的初学者。

public class testing
{

    public static int computeProduct(int first , int second) 
    {     int max = 40;
        int min = 10;

        int total = first * second;
        if (min <= first) {
            if (first <= max) {
                if (min <= second) {
                    if (second <= max) {
                        total = first * second;
                    } else {
                        System.out.println("Number is not in range, please try again");
                    }
                }
            }
        }
        return total;

    }



    public static void main(String[] args)
    {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter a number between 10 to 40:");
        int x = scanner.nextInt();
        System.out.println("Enter another number between 10 to 40:");
        int y = scanner.nextInt();

        int total = computeProduct(x, y);
        System.out.print("Product of x and y = " + total);



    }
}

预期的结果是告诉我数字是否不在范围内,但目前没有这样做。它给了我两个数字的乘积,无论它是否在范围内。

标签: java

解决方案


这里:

int total = first * second;

后跟一个if,后跟:

return total;

含义:每次if计算结果时false,您的方法都会简单地返回您最初分配的值!

你可以做什么:有一个else打印错误消息的块。或者抛出异常。

但理想情况下,您应该在这里分离关注点。意义:

  • 写一个类似的方法boolean inRange(int first, int second)。该方法返回trueor false,取决于第一个/第二个匹配您的条件
  • 如果该方法返回 true,则调用compute(),否则打印您的消息

换句话说:你的compute()方法可能根本不应该有那个 if 块。让该方法计算结果,并让另一个方法告诉您是否要调用compute()


推荐阅读