为了账号安全,请及时绑定邮箱和手机立即绑定

试图调用方法我得到 java.lang.IndexOutOfBoundsException

试图调用方法我得到 java.lang.IndexOutOfBoundsException

慕姐4208626 2022-01-12 14:15:14
我正在尝试在 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是空的。


查看完整回答
反对 回复 2022-01-12
  • 1 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信