Выдает ошибку "Нет доступных экземпляров типа Number". Как решить?

192
15 апреля 2022, 04:50
public abstract class Number {
    private double number;
    public Number(double number) {
        this.number = number;
    }
    public double getNumber() {
        return number;
    }
    public abstract void display();
    public abstract void plusNumbers();
    public abstract void minusNumbers();
    public abstract void mulNumbers();
    public abstract void divNumbers();
    
    public class Integer extends Number {
        private int integerNumber;
        public Integer(double number, int integerNumber) {
            super(number);
            this.integerNumber = integerNumber;
        }
        public int getIntegerNumber() {
            return integerNumber;
        }
        public void setIntegerNumber(int integerNumber) {
            this.integerNumber = integerNumber;
        }
        public void display() {
            System.out.printf("Number: %s", super.getNumber());
        }
        public void plusNumbers() {
            System.out.printf("%s + %s = %s", super.getNumber(), integerNumber,
                    super.getNumber() + (double) integerNumber);
        }
        public void minusNumbers() {
            System.out.printf("%s - %s = %s", super.getNumber(), integerNumber,
                    super.getNumber() - (double) integerNumber);
        }
        public void mulNumbers() {
            System.out.printf("%s * %s = %s", super.getNumber(), integerNumber,
                    super.getNumber() * (double) integerNumber);
        }
        public void divNumbers() {
            System.out.printf("%s / %s = %s", super.getNumber(), integerNumber,
                    super.getNumber() / (double) integerNumber);
        }
    }
    public class Real extends Number {
        private double realNumber;
        public Real(double number, double realNumber) {
            super(number);
            this.realNumber = realNumber;
        }
        public double getRealNumber() {
            return realNumber;
        }
        public void setRealNumber(double realNumber) {
            this.realNumber = realNumber;
        }
        public void display() {
            System.out.printf("Number: %s", super.getNumber());
        }
        public void plusNumbers() {
            System.out.printf("%s + %s = %s", super.getNumber(), realNumber, super.getNumber() + realNumber);
        }
        public void minusNumbers() {
            System.out.printf("%s - %s = %s", super.getNumber(), realNumber, super.getNumber() - realNumber);
        }
        public void mulNumbers() {
            System.out.printf("%s * %s = %s", super.getNumber(), realNumber, super.getNumber() * realNumber);
        }
        public void divNumbers() {
            System.out.printf("%s / %s = %s", super.getNumber(), realNumber, super.getNumber() / realNumber);
        }
    }
    public static void Main(String[] args) {
        Real realNum = new Real(4.0, 4.1);
        realNum.plusNumbers();
    }
}

При запуске программы выдает ошибку:

Смотрел примеры. Искал ошибку в гугле. Но смог найти. Помогите пожалуйста.

Answer 1

Мои действия:

  1. Создал файл Number.java с классом Number и вложенными в него Integer и Real.
  2. Вынес классы Integer и Real из класса Number
  3. Убрал у них public, чтобы не создавать для них отдельные файлы (можете этот пункт не выполнять, но сделать им файлы: Integer.java и Real.java)
  4. Исправил название метода main

Пример:

public abstract class Number {
    private double number;
    public Number(double number) {
        this.number = number;
    }
    public double getNumber() {
        return number;
    }
    public abstract void display();
    public abstract void plusNumbers();
    public abstract void minusNumbers();
    public abstract void mulNumbers();
    public abstract void divNumbers();
    public static void main(String[] args) {
        Real realNum = new Real(4.0, 4.1);
        realNum.plusNumbers();
        // 4.0 + 4.1 = 8.1
        System.out.println();
        Number num = new Real(4.0, 4.1);
        num.plusNumbers();
        // 4.0 + 4.1 = 8.1
    }
}
class Integer extends Number {
    private int integerNumber;
    public Integer(double number, int integerNumber) {
        super(number);
        this.integerNumber = integerNumber;
    }
    public int getIntegerNumber() {
        return integerNumber;
    }
    public void setIntegerNumber(int integerNumber) {
        this.integerNumber = integerNumber;
    }
    public void display() {
        System.out.printf("Number: %s", super.getNumber());
    }
    public void plusNumbers() {
        System.out.printf("%s + %s = %s", super.getNumber(), integerNumber,
                super.getNumber() + (double) integerNumber);
    }
    public void minusNumbers() {
        System.out.printf("%s - %s = %s", super.getNumber(), integerNumber,
                super.getNumber() - (double) integerNumber);
    }
    public void mulNumbers() {
        System.out.printf("%s * %s = %s", super.getNumber(), integerNumber,
                super.getNumber() * (double) integerNumber);
    }
    public void divNumbers() {
        System.out.printf("%s / %s = %s", super.getNumber(), integerNumber,
                super.getNumber() / (double) integerNumber);
    }
}
class Real extends Number {
    private double realNumber;
    public Real(double number, double realNumber) {
        super(number);
        this.realNumber = realNumber;
    }
    public double getRealNumber() {
        return realNumber;
    }
    public void setRealNumber(double realNumber) {
        this.realNumber = realNumber;
    }
    public void display() {
        System.out.printf("Number: %s", super.getNumber());
    }
    public void plusNumbers() {
        System.out.printf("%s + %s = %s", super.getNumber(), realNumber, super.getNumber() + realNumber);
    }
    public void minusNumbers() {
        System.out.printf("%s - %s = %s", super.getNumber(), realNumber, super.getNumber() - realNumber);
    }
    public void mulNumbers() {
        System.out.printf("%s * %s = %s", super.getNumber(), realNumber, super.getNumber() * realNumber);
    }
    public void divNumbers() {
        System.out.printf("%s / %s = %s", super.getNumber(), realNumber, super.getNumber() / realNumber);
    }
}
READ ALSO
Input и optput не работает на android 10 в чем проблема?

Input и optput не работает на android 10 в чем проблема?

Мое приложение делает копию файла из assets и помещает на хранилище устройства для дальнейшей работы с ним, однако на androide 10 не работает, и срабатывает...

196
Как пофиксить ошибку activity_main.xml

Как пофиксить ошибку activity_main.xml

вот такая ошибка вылезает, что делать?

110
Написать программу, которая выводит количество повторяющихся цифр в числе. Java

Написать программу, которая выводит количество повторяющихся цифр в числе. Java

Написать программу, которая считывает число и выводит количество всех содержащихся в нем цифр (от 0 до 9)Вывести соответствующий номер, только...

183
Не могу получить данные из session

Не могу получить данные из session

сохраняю юзера requestgetSession()

273