Показать содержимое подкласса

Я новичок в Java и мне очень нравится эта задача. В настоящее время я пытаюсь создать игру, содержащую 3 класса (Воин, Маг, Руж), из которых игрок может выбирать. Поэтому я создал конструктор для Основ (Здоровье, Мана, Выносливость) и подклассов для Воина, Мага и Руж.

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

Это суперкласс. Не запутайтесь в немецких обозначениях. : D

public class Klassen {

String Klasse;  
int Vitalitat; //Health
int Mana;
int Ausdauer; //Stamina

Klassen(String k, int v, int m, int a) {
    Klasse = k;
    Vitalitat = v;
    Mana = m;
    Ausdauer = a;
}
String getKlasse() {return Klasse;} //choice of classes
int getVit() {return Vitalitat;}
int getMana() {return Mana;}
int getAusdauer() {return Ausdauer;}

void setVit(int v) {Vitalitat =v;}
void setMana(int m) {Mana = m;}
void setAusdauer(int a) {Ausdauer = a;}
void setKlase(String k) {Klasse = k;}
void showBasic() {
    System.out.println("Vitalitaet: " + Vitalitat);
    System.out.println("Mana: " + Mana);
    System.out.println("Ausdauer " + Ausdauer);
}

Вот пример подкласса:

    public class Krieger extends Klassen {
    int Starke;

    Krieger(int v, int m, int a, int s) {

        super("Krieger", v, m, a);

        Starke = s;
    }

    int getStarke() {return Starke;}
    void setStarke(int s) {Starke = s;}

    void showStarke() {
        System.out.println("Starke: " + Starke);
    }
}

Следующим шагом является создание массива для хранения всех трех вариантов:

Klassen[] fillKlassen() {            //filling the array
        Klassen[] Auswahl = new Klassen[3];

            Auswahl[0] = new Krieger(0,0,0,0); //Warrior
            Auswahl[1] = new Magier(0,0,0,0);  //Mage
            Auswahl[2] = new Waldlaufer(0,0,0,0); //Rouge

            return Auswahl;                          
        } 

Последним шагом должно быть создание метода, который печатает содержимое массивов. Думаю, что-то похожее на:

class KlassenAuswahl {
Klassen[] fillKlassen() {
    Klassen[] Auswahl = new Klassen[3];

        Auswahl[0] = new Krieger(0,0,0,0); // Eclipse can't use that reference and wants me to change it to Klassen(int,int,int)
        Auswahl[1] = new Magier(0,0,0,0);
        Auswahl[2] = new Waldlaufer(0,0,0,0);

        return Auswahl;

    }
void showKlassen() {
    for(int i = 0; i < fillKlassen().length; i++) {
        System.out.println(fillKlassen()[i].getKlasse());

    }
}

Основная цель - реализовать этот метод в моем методе main (), но он не будет работать должным образом. Кто-нибудь может мне помочь?

Обновлено: основная проблема заключается в том, что я получаю исключение nullpointer.exception. Я думаю, это может быть результатом пустого массива? Следующее, что я не могу реализовать showAuswahl () в моем main (), возможно, потому что он находится внутри класса конструктора. Поэтому мне нужно создать новый класс вне его. Но вне конструктора я не могу использовать свои подклассы ...

Ваше здоровье безымянный

Было бы неплохо, если бы вы могли переводить идентификаторы. Ваш английский явно достаточно хорош для этого.

Michael 29.06.2018 11:20

Простите за это! Код переделал :)

namelessshameless 29.06.2018 11:30

Не могли бы вы указать, в какой строке вы получаете исключение нулевого указателя?

Tom 29.06.2018 13:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Я нашел решение. Нужно было изменить мои подклассы на статические :)

Значит, вы определили их все в одном файле? Обычно каждый класс определяется в собственном файле, и это предпочтительный метод того, как это должно быть сделано.

OH GOD SPIDERS 29.06.2018 18:18

Не волнуйтесь! Я определил класс, который содержит мои кострукторы, и еще один для всего материала show () :)

namelessshameless 30.06.2018 18:45

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