猿问

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

我正在尝试在 android 上编写游戏,文本任务。

我有一个称为“工作”的过程,它的作用是让玩家有机会选择工作地点以及他想工作多少时间,然后处理这些信息。

下面是两个方法“ checkWorkPlaces() ”的代码,它检查玩家所在城市是否有工作的地方,然后它调用“ chooseWorkPlace() ”方法,让玩家有机会选择他想工作的地方。

  • tvInfo - TextView,我显示它的所有信息。

  • player - 我的自定义类Player 的对象,具有自定义类Place 的位置等属性,具有属性nameworkPlaces - 包含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 停止程序

慕姐4208626
浏览 160回答 1
1回答

慕沐林林

这条线似乎给了你错误,String choice = answerContainer.get(0).toString().toLowerCase();可能您应该先检查answerContainer在零索引处获取元素的大小吗?或者你应该调试为什么answerContainer是空的。
随时随地看视频慕课网APP

相关分类

Java
我要回答