我正在尝试在 android 上编写游戏,文本任务。
我有一个称为“工作”的过程,它的作用是让玩家有机会选择工作地点以及他想工作多少时间,然后处理这些信息。
下面是两个方法“ checkWorkPlaces() ”的代码,它检查玩家所在城市是否有工作的地方,然后它调用“ chooseWorkPlace() ”方法,让玩家有机会选择他想工作的地方。
tvInfo - TextView,我显示它的所有信息。
player - 我的自定义类Player 的对象,具有自定义类Place 的位置等属性,具有属性name和workPlaces - 包含WorkPlace类的工作场所的数组,每个都有定义和名称属性。
answerContainer - 只是我用来在方法之间传递一些信息的ArrayList。
btnMainGame - 实际上只是一个Button,我用来保存用户信息
hideButtons() - 隐藏屏幕上的一些按钮[对我的问题不重要]
protected void checkWorkPlaces() {
answerContainer.clear();
if (player.location.workPlaces.length > 0) {
tvInfo.setText("In " + player.location.name + " there are a few places to work:");
for (WorkPlace workPlace : player.location.workPlaces) {
tvInfo.append("\n" + workPlace.defenition);
}
tvInfo.append("Where do you want to work?");
chooseWorkPlace();
} else {
tvInfo.setText("There is nowhere to work in " + player.location.name);
}
}
protected void chooseWorkPlace() {
hideButtons();
btnMainGame.setText(getString(R.string.save));
btnMainGame.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (etInput.getText().toString().isEmpty()){
Toast.makeText(MainActivity.this, "Please enter something", Toast.LENGTH_SHORT).show();
chooseWorkPlace();
} else {
answerContainer.add(etInput.getText().toString().toLowerCase());
}
}
});
String choice = answerContainer.get(0).toString().toLowerCase();
answerContainer.clear();
if (!Objects.equals(choice, "back")) {
for (WorkPlace workPlace : player.location.workPlaces) {
if (Objects.equals(workPlace.name.toLowerCase(), choice)) {
answerContainer.add(workPlace);
return;
}
}
tvInfo.append("\n\nThere is no such work place as: " + choice + ", try again");
chooseWorkPlace();
}
}
所以,问题是,当程序开始调用chooseWorkPlace()方法时,它会用 java.lang.IndexOutOfBoundsException 停止程序
慕沐林林
相关分类