Добавление класса в список массивов - PullRequest
0 голосов
/ 07 января 2019

Я в настоящее время пишу RPG, используя Java-классы как побочный проект после завершения моего курса OODP. У меня есть 3 класса, с которыми связана эта проблема. Класс работы, класс рыцаря и класс навыков. Knight наследует свойства от класса Job и имеет отношение "имеет" к классу Skills. Фрагмент кода Knight Class показан ниже. Моя проблема в том, что вторая последняя строка - skill.add (косая черта); получает несколько ошибок. Я протестировал с помощью всего лишь целого списка массивов, чтобы добавить целые числа в список массивов, что привело к тому же набору ошибок. Что-то не так с моим кодом или синтаксисом здесь?

import java.util.ArrayList;

public class Knight extends Job {
    public Knight() {
        super("Knight");
    }

    private ArrayList<Skills> skills = new ArrayList<Skills>();
    Skills slash = new Skills(5, 1, "Slash");
    skills.add(slash);
}

Это конструктор для класса навыков

public Skills(int dps, int mana, String name) {
    this.dps=dps;
    this.mana=mana;
    this.name=name;
}

Это ошибки, с которыми я столкнулся

Multiple markers at this line
- Syntax error, insert ")" to complete MethodDeclaration
- Syntax error, insert "SimpleName" to complete 
 QualifiedName
- Syntax error on token ".", @ expected after this token
- Syntax error, insert "Identifier (" to complete 
 MethodHeaderName

Ответы [ 4 ]

0 голосов
/ 07 января 2019

Вы не поместили выражение "skill.add (slash)" в метод / конструктор / инициализатор, поэтому вы получаете ошибку. Просто измените код на -

   import java.util.ArrayList;

    public class Knight extends Job {
         private ArrayList<Skills> skills = new ArrayList<Skills>();
         Skills slash = new Skills(5, 1, "Slash");
         public Knight() {
             super("Knight");
             skills.add(slash);
         } 

     }
0 голосов
/ 07 января 2019

измените код своего рыцаря следующим образом

 import java.util.ArrayList;
 private ArrayList<Skills> skills = new ArrayList<Skills>();
 Skills slash = new Skills(5, 1, "Slash");
    public class Knight extends Job {
    public Knight() {
        super("Knight");
    skills.add(slash);
    }

}

если вы хотите добавить больше навыков во время выполнения, напишите один метод для.

0 голосов
/ 07 января 2019
private ArrayList<Skills> skills = new ArrayList<Skills>();
Skills slash = new Skills(5, 1, "Slash");
skills.add(slash);

Над частью или, по крайней мере, skills.add(slash); должно быть внутри одного из следующих элементов,

  • Внутри метода
  • Внутри основного метода
  • Внутри конструктора
  • Внутри блока инициализатора экземпляра или в статическом блоке инициализатора
0 голосов
/ 07 января 2019

Вы не можете иметь утверждение прямо внутри класса. Вы должны поместить его в конструктор, метод или инициализатор.

В вашем случае просто поместите skills.add(slash); в конструктор.

...