点击随机按钮时如何展示同索引位置的不同字符串?
解决同索引字符串配对显示的问题
我明白你的困扰啦——现在你的代码里randomWord()和randomWord2()是各自随机生成索引,所以WORDS和WORDS2的内容没法保证对应同索引。要实现点击随机按钮时,两个数组同索引的内容分别显示在不同TextView里,核心是只生成一个随机索引,用这个索引同时获取两个数组的元素,这样就能完美配对啦。
下面是具体的修改步骤:
1. 修改Adapter.java,统一随机索引的生成
删掉原来各自独立的randomWord()和randomWord2()方法,新增一个获取随机索引的方法,这样我们就能用同一个索引取两个数组的元素:
package com.word.game; import java.util.Random; public class Adapter { public static final Random RANDOM = new Random(); public static final String[] WORDS = {"RUN", "WALK", "CRY", "SUGAR", "SALT", "RAIN", "NOVEMBER"}; public static final String[] WORDS2 = {"FAST", "RELAX", "TEARS", "DRINK", "RECIPERS", "WATER", "CALENDAR"}; // 新增:生成一个随机索引(两个数组长度一致,直接用WORDS的长度即可) public static int getRandomIndex() { return RANDOM.nextInt(WORDS.length); } public static String shuffleWord(String word) { if (word != null && !"".equals(word)) { char a[] = word.toCharArray(); for (int i = 0; i < a.length; i++) { int j = RANDOM.nextInt(a.length); char tmp = a[i]; a[i] = a[j]; a[j] = tmp; } return new String(a); } return word; } }
2. 修改MainActivity.java的newGame()方法,用同一索引配对内容
在newGame()里生成一次随机索引,然后用这个索引同时获取WORDS和WORDS2的元素,再分别设置到对应的TextView中:
private void newGame() { // 生成唯一的随机索引 int randomIndex = Adapter.getRandomIndex(); // 用同一个索引取两个数组的对应元素 wordToFind = Adapter.WORDS[randomIndex]; wordToFind2 = Adapter.WORDS2[randomIndex]; String wordShuffled = Adapter.shuffleWord(wordToFind); suffletext.setText(wordShuffled); // 将WORDS2的对应内容显示在quest这个TextView里 quest.setText(wordToFind2); answer.setText(""); }
为什么这样改?
原来的代码中,randomWord()和randomWord2()会各自生成独立的随机索引,导致两个数组的内容大概率不匹配。现在我们只生成一次索引,同时获取两个数组的元素,就能严格保证WORDS和WORDS2中同位置的字符串配对显示啦。
另外要注意:确保WORDS和WORDS2的数组长度一致,你的代码里两者都是7个元素,完全没问题~
内容的提问来源于stack exchange,提问作者Onad Hanif
相关产品推荐
相关产品推荐

