2

我正在为我的 Java 类介绍做一个项目,我们必须格式化一个 UML

+adjustQuantity(adjustingQuantity:int):void // Adjusts the book stored quantity by the given amount. The final
                                                                                       //    must be >= 0

我已经获得了添加已应用的调整间隔的代码,

public void adjustQuantity(int adjustingQuantity)
    { 
        int iAdjustingQuantity;
        int iQuantity= this.quantity;
        int iNewQuantity = (this.quantity + iAdjustingQuantity);
        if(iNewQuantity <=0)

    }

我遇到的问题是让值停止在 0。我只会做一个 if 语句,上面写着“如果小于 0,则返回 0”,但它没有返回任何东西,所以我不能这样做......所以我的问题我如何让它保持积极而不是消极?

4

4 回答 4

2

也许这个?

public void adjustQuantity(int adjustingQuantity) { 
    int iNewQuantity = this.quantity + adjustingQuantity;
    if (iNewQuantity >= 0)
        this.quantity = iNewQuantity 
    else
        this.quantity = 0;
}

使用上述内容,您可以保证仅当新数量为零或正数时才会调整数量,否则我们分配零。

于 2013-11-05T20:34:25.747 回答
0

基本操作应该是:

this.iQuantity = Math.max(iQuantity + iAdjustingQuantity, 0);

但是,没有理由i在整数变量上使用前缀;你的方法应该足够短以至于你不需要前缀。此外,假设您的需求发生了变化,并且您必须切换到longs。您是否只是更改类型并拥有:

long iQuantity;

现在,如果新值是负数,你想发生什么?你想把它设置为零吗?你想抛出异常吗?你想恢复吗?这需要你的决定。

@jcalfee314 建议扔一个Exception; 我会建议一个特定的子类来Exception代替。 IndexOutOfBoundsException似乎不太对;我会用IllegalArgumentException.

在大型程序中使用它的最佳方法可能是使用PropertyChangeEvent,PropertyChangeListenerVetoableChangeListener. 查阅 JavaBeans 规范,第 7.4 节。使iQuantity boundconstrained

于 2013-11-05T21:23:39.240 回答
0

您可以再次分配变量:

public void adjustQuantity(int adjustingQuantity)
    { 
        int iAdjustingQuantity;
        int iQuantity= this.quantity;
        int iNewQuantity = (this.quantity + iAdjustingQuantity);
        if(iNewQuantity <=0)
            iNewQuantity = 0;

        this.quantity=iNewQuantity;
    }
于 2013-11-05T20:34:21.200 回答
0
if ((adjustingQuantity+this.quantity) < 0)
  throw new Exception("adjustingQuantity must be greater than or equal to zero");
于 2013-11-05T20:36:04.943 回答