我正在尝试制作一个DnD字符生成器,其中一部分我需要有一个可由其他方法编辑的统计信息列表,所以我尝试在类级别添加它。我当前的代码是:
public class CharacterCreator extends Application
{
ArrayList<String> stats = new ArrayList<String>();
stats.add("STR");
stats.add("DEX");
stats.add("CON");
stats.add("INT");
stats.add("WIS");
stats.add("CHA");
public void start(Stage primaryStage)
{
但是当我尝试运行它时,在每个'add‘行上都会得到一个"identifier expected“错误。
发布于 2018-06-02 07:27:51
您可以按如下方式初始化ArrayList
:
ArrayList<String> stats = new ArrayList<>(Arrays.asList("STR", "DEX"));
如this answer所示。或者,将add调用放在一个方法或构造函数中,如下所示:
ArrayList<String> stats = new ArrayList<>();
// Adding to ArrayList inside a constructor
public CharacterCreator()
{
stats.add("STR");
stats.add("DEX");
}
发布于 2018-06-02 07:23:32
你不能在类体中有这样的空洞的语句。您需要在方法、构造函数或初始化块中填充数组:
public class CharacterCreator extends Application{
ArrayList<String> stats;
public CharacterCreator() {
stats = new ArrayList<String>();
stats.add("STR");
stats.add("DEX");
stats.add("CON");
stats.add("INT");
stats.add("WIS");
stats.add("CHA");
}
}
如果希望在类级别而不是对象级别定义统计信息,则需要添加一个静态初始化块:
public class CharacterCreator extends Application{
static ArrayList<String> stats;
static {
stats = new ArrayList<String>();
stats.add("STR");
stats.add("DEX");
stats.add("CON");
stats.add("INT");
stats.add("WIS");
stats.add("CHA");
}
}
发布于 2018-06-02 07:32:04
那么初始化块呢?
public class CharacterCreator extends Application {
public ArrayList<String> stats = new ArrayList<String>();
{
stats.add("STR");
stats.add("DEX");
stats.add("CON");
stats.add("INT");
stats.add("WIS");
stats.add("CHA");
}
}
https://stackoverflow.com/questions/50652061
复制相似问题