在我的课程中,我将成员变量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的任何值执行)

09-16 01:00