Метод счетчика не увеличивается

Я делаю упражнение, в котором моя основная программа выглядит так и использует класс счетчика для печати списка чисел до тех пор, пока он не достигнет предела, который я даю при создании объекта, а затем возвращается к 0. Я ожидаю, что он вернет 0,1,2,3,4,5, а затем вернется к 0, но все, что он делает, дает мне 0.

public class Main {
  public static void main(String args[]) {
    BoundedCounter counter = new BoundedCounter(5);
    System.out.println("value at start: "+ counter);

    int i = 0;
    while (i< 10) {
        counter.next();
        System.out.println("Value: "+counter);
        i++;
    }
  } 
}

А мой класс BoundedCounter выглядит так:

public class BoundedCounter {
  private int value;
  private int upperLimit;

  public BoundedCounter(int Limit) {
     upperLimit = Limit;
  }
  public void next(){
    if (this.value <= upperLimit) {
        this.value+=1;
    }
      this.value = 0;
  }
   public String toString() {
     return "" + this.value;
  }

}

Ваш next метод всегда устанавливает value в 0

UnholySheep 10.06.2018 17:09

Попробуйте отладить свою программу, чтобы увидеть, какая строка this.value установлена ​​на 0 в методе next.

user202729 10.06.2018 17:10

(примечание: это не Python. В большинстве случаев вам не нужен this..)

user202729 10.06.2018 17:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
87
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам понадобится else:

if (this.value <= upperLimit) {
    this.value+=1;
} else {
    this.value = 0;
}

Вам нужно поместить this.value = 0 в еще заявление, поскольку он выполняется каждый раз.

Измененный код:

public void next(){
    if (this.value <= upperLimit) {
        this.value+=1;

    }
    else
        this.value = 0;
}

Другие вопросы по теме