Java ооп, класс Int

Реализуйте класс Int, который выполняет объектно-ориентированные операции с числом.

● методы increment(), увеличивающий на 1 и decrement() уменьшающий значение на 1,
● методы сложения add(Int n) и вычитания substract(Int n)
● метод toString()

По умолчанию, класс инициализируется как «0»

Выполните наименьшее количество операций, чтобы преобразовать из числа 0 в число 1000. (менее чем за 50)
Программа должна быть чисто объектно-ориентированной. Нельзя использовать оператор присваивания.

public class Main
{
     private int one;
    
     public int decrement() {
        return --one;
    }

	public int increment() {
        return ++one;
    }
    
	//методы  increment(), увеличивающий на 1 и decrement() уменьшающий значение на 1
    
    public int add(int n) {
      if (n == 0) {
        return one;
      }
      else {
        increment();
        return add(n - 1);
      }
    }
    
    public int substract(int n) {
      if (n == 0) {
        return one;
      }
	//методы сложения add(Int n) и вычитания substract(Int n)	
      
	else {
        decrement();
        return substract(n - 1);
      }
    }

    
    public String toString() { //метод 	toString()
        return "Is string: " + one;
    }
    
    public static void main(String[] args) {
        Main numObj = new Main();
        System.out.println(numObj.increment());
        System.out.println(numObj.decrement());
        System.out.println(numObj.add(50));
        // System.out.println(numObj.add(numObj.myNum));
        System.out.println(numObj.substract(50));
        // System.out.println(numObj.substract(numObj.myNum));
        
        while (numObj.add(20) < 1000) {
            
        }
        System.out.println(numObj.one);
        System.out.println(numObj.toString());
    }
}

Говорят не правильно . Что не так?

Так а чего они не говорят что не так?)

Без сторонних цифр , реализовать переход из 0 в 1000. Используя increment decrement.

Тут же вроде просят передавать этот класс параметром, а не обычный инт.

по умолчанию объект равен 0, преобразуем число в 1000 без сторонних цифр

в 26 строчке работаю с примитивом , а надо с обЪектом

Ну так я и говорю, передавайте объект параметром.

Правда не очень понятно как с ним работать имея только эти методы. Может быть можно еще сделать метод типа bool equals(n) для сравнения значений.

подскажите, как это правильно написать?

Если без добавления equals, то хз. Если с ним, то всё так же, просто везде использовать свой класс. Вызывать equals вместо == и т.д. И возвращать везде тоже либо свой класс (return this если надо текущий объект менять, а не создавать новые), либо void.

как задать объект , а не примитив?

Так а в чем именно проблема?

Использование как-то так должно выглядеть.

Int two = new Int();
two.increment();
two.increment();
Int four = two.add(two);

Если я правильно понял, тут всё не так :grin:

Если я правильно понял, вам надо создать собственный целочисленный тип (аналог Int). А вы просто создали переменную в классе Main и гоняете её туда-сюда методами этого же класса :man_shrugging:
Либо имелось ввиду просто сделать обёртку класса Int :thinking: Если так, то всё просто.
Что-то типа этого:
MyInt.java

public class MyInt
{
     private int val = 0;
    
     public int decrement() {
        return --val;
    }

	public int increment() {
        return ++val;
    }
    

    public int add(int n) {
      if (n > 0) {
        val += n;
      }
		return val;
    }
    
    public int substract(int n) {
      if (n < 0) {
		 val -= n;
      }
        return val;
    }

    
    @Override
    public String toString() { 
        return "Is string: " + val;
    }
    
}

А потом просто создать экземпляр этого класса и с ним работать.

Нельзя где? :thinking:

Надо еще чтоб внутри класса везде был MyInt вместо инта (кроме переменной val, хотя может и без нее можно обойтись как-нибудь).

Видимо везде )
Ну разве что для инициализации val.