使adjustQuantity方法停止在0

时间:2013-11-05 20:32:59

标签: java

我正在为我的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 个答案:

答案 0 :(得分:2)

也许这个?

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

通过上述方法,您可以保证仅在新数量为零或正数时调整数量,否则我们指定为零。

答案 1 :(得分: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;
    }

答案 2 :(得分:0)

if ((adjustingQuantity+this.quantity) < 0)
  throw new Exception("adjustingQuantity must be greater than or equal to zero");

答案 3 :(得分:0)

基本操作应该是:

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

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

long iQuantity;

现在,如果新值为负值,您希望发生什么?你想把它设置为零吗?你想抛出异常吗?你想还原吗?这需要你做出决定。

@ jcalfee314建议抛出Exception;我建议使用Exception的特定子类。 IndexOutOfBoundsException似乎不太正确;我会使用IllegalArgumentException

在大型计划中使用此功能的最佳方式可能是使用PropertyChangeEventPropertyChangeListenerVetoableChangeListener。查看JavaBeans规范,第7.4节。使iQuantity 绑定约束