【问题标题】:Index issue on arraylist (Android Studio)arraylist 上的索引问题(Android Studio)
【发布时间】:2016-11-05 06:42:09
【问题描述】:

我正在尝试创建一个简单的游戏,使用媒体播放器根据 android studio 中的 arraylist 数字来猜测歌曲的标题。所以我在开始时声明了一个索引,每次随机增加 1,并且每当用户单击答案时也会发生(使用方法 onClick)。

ImageButton play, answer1, answer2, answer3;
int[] song = new int[] {R.raw.beautifulithurts, R.raw.iwontletyouwalkaway, R.raw.lebihindah, R.raw.ruletheworld, R.raw.sweetescape, R.raw.thatgirl, R.raw.thisislivingnow, R.raw.thislife, R.raw.thousandmiles, R.raw.u};
int[] image = new int[] {R.drawable.lvlaa, R.drawable.lvlab, R.drawable.lvlac, R.drawable.lvlad, R.drawable.lvlae, R.drawable.lvlaf, R.drawable.lvlag, R.drawable.lvlah, R.drawable.lvlai, R.drawable.lvlaj};
ArrayList<Integer> numbers = new ArrayList<>();
ArrayList<Integer> cloning = new ArrayList<>();
int index = 0, a = 0, b = 1, c = 2, random = 0, x = 0, y = 0, z = 0, benar = 0, salah = 0;
MediaPlayer mp;  

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.game);

        play = (ImageButton) findViewById(R.id.play);
        answer1 = (ImageButton) findViewById(R.id.answer1);
        answer2 = (ImageButton) findViewById(R.id.answer2);
        answer3 = (ImageButton) findViewById(R.id.answer3);

        for (int i = 0; i <= song.length; i++) {
            numbers.add(i);
        }
        Collections.shuffle(numbers);

        random();

        play.setOnClickListener(this);
        answer1.setOnClickListener(this);
        answer2.setOnClickListener(this);
        answer3.setOnClickListener(this);
    }

    public void prepareAnswer() {...}

    public void random() {
        mp = MediaPlayer.create(this, song[numbers.get(index)]);
        mp.start();
        prepareAnswer();
        answer1.setImageResource(image[x]);
        answer2.setImageResource(image[y]);
        answer3.setImageResource(image[z]);
        index++;
    }

    @Override
    public void onClick(View v) {...}
}

但是每次我重新启动游戏时,logcat 都会显示错误:数组索引超出范围异常(大小:10 索引:10)。每次重新启动游戏时如何处理此错误并将索引重置为 0?

【问题讨论】:

  • 请在此处发布您的完整 logcat 错误.......
  • java.lang.ArrayIndexOutOfBoundsException: length=10; index=10 at com.lucreamysong.beatupthebeat.game.random(game.java:92) at com.lucreamysong.beatupthebeat.game.onClick(game.java:118) @sushildlh
  • 看看答案,我认为它解决了你的问题.....

标签: java android arraylist indexing


【解决方案1】:

使用下面的代码代替你的.....

for (int i = 0; i < song.length; i++) {
            numbers.add(i);
        }

注意:- 问题是您在此处添加了额外的数字并从不存在的 song 的数组列表中访问该额外值.....例如:-

歌曲有 10 个值,您正在尝试访问第 11 个值.....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 2020-12-09
    • 2014-01-29
    • 2013-05-19
    • 1970-01-01
    • 2013-05-10
    • 2014-12-15
    相关资源
    最近更新 更多