在我的课程中,我将成员变量honey设置如下:
int honey = 10;
我想要以下方法要做的是,将所需的胡蜂数量作为参数,如果可用,则返回该数量,然后从商店中删除指定的数量,如果没有蜂蜜,则返回0。我的方法如下:
public int takeHoney(int h2){
if(h2 <= honey){
honey = honey - h2;
return h2;
}else{
return 0;
}
}
当我的测试工具执行此操作时:
h.takeHoney(Integer.MAX_VALUE);
它不会像我想要的那样沿着if分支下降,而是沿着else分支下降。为什么是这样?
当使用Integer.MAX_VALUE时,肯定会删除配置单元中的确切值,因此h2
最佳答案
“蜂蜜”是全局变量吗?
如果是,它的价值是什么?
仅当变量Honey的值大于或等于变量h2时,“ If”块才起作用。
我认为Honey的值小于h2。这就是为什么执行else块的原因。
[编辑]
您更新了问题,并明确提到honey = 10。
if块中的条件(h2
蜂蜜值= 10;
h2 = Integer.MAX_VALUE = 2147483647。
显然h2> honey。
因此,在这种情况下,您的if块将永远不会执行。
更改方法调用如下
h.takeHoney(10);
要么
h.takeHoney(9);
(您的if块将以小于11的任何值执行)