【问题标题】:Java: How to not allow variable to go below 0Java:如何不允许变量低于 0
【发布时间】: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


【解决方案1】:

让我来一一回答你的问题:

  • 不要让计数器使用 minus1() 设置为 -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;
    }

你可以使用一些记录器来打印字符串

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-09
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    相关资源
    最近更新 更多