我正在尝试在 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 停止程序
1 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
这条线似乎给了你错误,
String choice = answerContainer.get(0).toString().toLowerCase();
可能您应该先检查answerContainer
在零索引处获取元素的大小吗?或者你应该调试为什么answerContainer
是空的。
添加回答
举报
0/150
提交
取消