java - Java:如何不允许变量低于 0
问题描述
我有一个正在测试的计数器类。计数器以 1 递增或递减。但是,我不希望数字低于零,并且我想在计数器设置为负值时输出错误消息。下面是我的计数器类的代码。另外,我不确定如何让布尔测试显示一个字符串,说明计数器的两个实例相等(或不相等)。谢谢你的帮助。
public class Counter {
private int counter;
public Counter() {
counter = 0;
}
//mutator adds 1 to counter
public void plus1(){
setCounter(getCounter() + 1);
}
//mutator subtracts 1 from counter
public void minus1(){
setCounter(getCounter() - 1);
}
//mutator
public void setCounter(int newCounter){
counter = newCounter;
}
//accessor
public int getCounter(){
return counter;
}
//polymorph
public String toString(){
return "The counter is currently at " + counter + ".";
}
public boolean equals(Counter a){
return this.getCounter() == a.getCounter();
}
}
解决方案
让我尝试一一回答您的问题:
- 不要让计数器使用减号1()设置为-ve值:为此,您可以添加类似的条件
if(counter == 0)
throw new IllegalStateException("counter already 0"); // could be another exception type
- 不让计数器使用 setCounter(newCounter) 设置为 -ve 值
if(newCounter < 0)
throw new IllegalArgumentException("counter cannot be negative"); // could be another exception type
- 布尔测试显示一个字符串是否计数器相等:
不确定您是否尝试覆盖 Object#equals 方法,那么您的方法签名是错误的,可能是
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Counter that = (Counter) o;
return counter == that.counter;
}
您可以使用一些记录器来打印字符串
推荐阅读
- php - 如何使用三元运算符检查资产存储是否为空
- cygwin - Cygwin - 找不到标题
- xcode - 无法分发 Mac Catalyst 扩展
- javascript - 如何在从父窗口调用的子窗口中设置输入文本值?
- json - 使用来自 rest.response 的值
- ruby-on-rails - rails ancestry 从根上获取所有最后的孩子
- node.js - 在用于身份验证系统的 Node JS 中同时使用 JWT 和 Sessions
- django - 如何在 django 中动态更改评论 ModelForm
- python - Django:模型 UniqueConstraint 迁移时出错
- pine-script - 松树脚本中的 VWAP