Java: Как не позволить переменной опуститься ниже 0 - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть контр-класс, который я тестирую.Счетчик увеличивается или уменьшается на 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 Ответ

0 голосов
/ 09 февраля 2019

Позвольте мне постараться ответить на ваши вопросы один за другим:

  • не разрешать счетчику устанавливать значение -ve, используя minus1 (): для этого вы можете добавить такие условия, как
if(counter == 0)
    throw new IllegalStateException("counter already 0"); // could be another exception type
  • не разрешать счетчику устанавливать значение -ve с помощью setCounter (newCounter)
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;
    }

Вы можете использовать какой-нибудь регистратор для печати строки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...