我正在尝试使用媒体播放器创建一个简单的游戏来猜测歌曲的标题,该播放器根据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 index:10)。每次重新启动游戏时,如何处理此错误并将索引重置为0?
使用下面的代码,而不是你的.....
for (int i = 0; i < song.length; i++) {
numbers.add(i);
}
注意:-问题是您要在此处添加多余的数字,并song
从不存在数组列表的列表中访问该多余的值..例如:-
歌曲有10个值,并且您尝试访问第11个值...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句