如何创建添加两个数字的mutator方法,但如果输入的添加数字为负数,则会显示错误消息而不更改第一个数字。建议请。
public void restock(int newStockQuantity)
{
if(newStockQuantity < 0)
{
stockQ = stockQ;
}
{
system.out.println("Error not negative numbers");
}
else
{
stockQ = stockQ + newStockQuantity;
}
}
答案 0 :(得分:2)
嗯,首先,你不需要
stockQ = stockQ;
声明 - 没有做任何事情。
接下来是在“if”语句中有多个块的问题。如果您 希望保留no-op分配,则可以将方法更改为:
public void restock(int newStockQuantity)
{
if(newStockQuantity < 0)
{
stockQ = stockQ;
System.out.println("Error not negative numbers");
}
else
{
stockQ = stockQ + newStockQuantity;
}
}
删除无操作分配后,它只是:
public void restock(int newStockQuantity)
{
if(newStockQuantity < 0)
{
System.out.println("Error not negative numbers");
}
else
{
stockQ = stockQ + newStockQuantity;
}
}
注意从“system”到“System”的变化--Java区分大小写。
那应该编译和工作。
就个人而言,如果方法的参数无效而不是向控制台打印消息,我建议抛出异常,但显然取决于具体情况。
如果你不理解我关于if语句有多个块的第一个评论,那么我建议你回到一本好的入门Java书籍,看看if语句的语法。你有点麻烦,有点不清楚。
答案 1 :(得分:0)
恕我直言,最好的方法是例外。另一点是输出有问题的值,因此该方法的用户知道错误是什么。它还会显示您的支票错误;)。第三点是首先检查不变量,使用异常或某些适用的返回语句进行挽救。
public void restock(int newStockQuantity) {
if(newStockQuantity < 0) {
throw new IllegalArgumentException("new stock " + newStockQuantity " must not be negative");
}
if (newStockQuantity == 0)
{
// nothing necessary, probably worth another exception?
return;
}
stockQ = stockQ + newStockQuantity;
}