【发布时间】:2019-02-09 14:45:38
【问题描述】:
我正在测试一个计数器类。计数器递增或递减 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();
}
}
【问题讨论】:
-
在
minus1()方法中,只要检查counter是否已经是0;如果是,请显示您的错误并且不要再减去... -
你的编码教育和你的问题都会得到改善,至少在来到这里之前尝试实现这一点,然后在你的问题中展示你的尝试。这实际上是本网站上的家庭作业问题所必需的。即使你对解决方案一无所知,尝试,任何尝试,都会帮助你更加专注于问题。
-
请注意,您的
equals方法没有正确覆盖equals:参数应该是Object类型。你也应该覆盖hashCode。 -
@Zephyr 如果
setCounter是私有的(或不存在)就足够了(几乎)。实际上,您也需要在那里检查newCounter的值。 (几乎,因为您还需要在 plus1 方法中检查溢出)。 -
@HovercraftFullOfEels 感谢您提供信息。我完全不知道如何做我需要的事情。尝试将在以后的帖子中显示。
标签: java string class object variables