java - 解释 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);
}
}
预期的结果是告诉我数字是否不在范围内,但目前没有这样做。它给了我两个数字的乘积,无论它是否在范围内。
解决方案
这里:
int total = first * second;
后跟一个if
,后跟:
return total;
含义:每次if
计算结果时false
,您的方法都会简单地返回您最初分配的值!
你可以做什么:有一个else
打印错误消息的块。或者抛出异常。
但理想情况下,您应该在这里分离关注点。意义:
- 写一个类似的方法
boolean inRange(int first, int second)
。该方法返回true
orfalse
,取决于第一个/第二个匹配您的条件 - 如果该方法返回 true,则调用
compute()
,否则打印您的消息
换句话说:你的compute()
方法可能根本不应该有那个 if 块。让该方法计算结果,并让另一个方法告诉您是否要调用compute()
。
推荐阅读
- r - R Project - 如何改变控制台文本的颜色?
- google-cloud-platform - 在 Google Compute Engine 上将 Debian 8 升级到 9 的正确方法是什么?
- javascript - 如何在nodejs中重复执行
- python - Pandas遍历行,将列值与列表中的字符串进行比较,从另一列返回值
- python - 表单验证评估为 False Flask
- c++ - 警告隐式转换丢失整数精度
- react-native - 如何在 React-Native 的折线图中绘制 2 个数据
- python - 从数组中提取非“-1”索引的最快方法是什么?
- python - 如何从许多项目的缓冲区中产生单个项目并定期重新填充缓冲区?
- javascript - ES6 类 - 链选择