我正在为我的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”,但它不会返回任何内容,所以我不能这样做...所以我的问题是如何让它保持积极而不是消极?
答案 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
。
在大型计划中使用此功能的最佳方式可能是使用PropertyChangeEvent
,PropertyChangeListener
和VetoableChangeListener
。查看JavaBeans规范,第7.4节。使iQuantity
绑定和约束。