这是一个生成随机字符串的类文件。
public class RandomGen {
static String keys() {
String str[] = new String[25];
str[0] = "Press A1";
str[1] = "Press A2";
str[2] = "Press A3";
str[3] = "Press A4";
str[4] = "Press A5";
str[5] = "Press B1";
str[6] = "Press B2";
str[7] = "Press B3";
str[8] = "Press B4";
str[9] = "Press B5";
str[10] = "Press C1";
str[11] = "Press C2";
str[12] = "Press C3";
str[13] = "Press C4";
str[14] = "Press C5";
str[15] = "Press D1";
str[16] = "Press D2";
str[17] = "Press D3";
str[18] = "Press D4";
str[19] = "Press D5";
str[20] = "Press E1";
str[21] = "Press E2";
str[22] = "Press E3";
str[23] = "Press E4";
str[24] = "Press E5";
Random randomGenerator = new Random();
int randomInt = randomGenerator.nextInt(25);
return str[randomInt];
}
}
这是android活动文件。我正在从类中返回一个随机文本并在文本视图中显示。如果返回的字符串是“按A1”,则用户应仅按下Al按钮。如果他按下其他按钮,则必须在其他文本视图中显示错误消息。下次如果在该文本视图中显示“按C1”,则用户应仅按下C1按钮。如果他按下另一个按钮“错误按钮”消息必须显示。我不知道如何检查病情。请帮帮我。
RandomGen rg = new RandomGen();
String s;
b[0].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s = rg.keys();
tv.setText(s);
tv2.setText("A1 is pressed");
}
});
b[1].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s = rg.keys();
tv.setText(s);
tv2.setText("A2 is pressed");
}
});
b[2].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s = rg.keys();
tv.setText(s);
tv2.setText("A3 is pressed");
}
});
b[3].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
s = rg.keys();
tv.setText(s);
tv2.setText("A4 is pressed");
}
});
答案 0 :(得分:0)
如果您想测试这个,我建议创建一个包含两个实现的RandomGenerator接口。一个实现返回一组预定义的结果,另一个使用Random来提供答案。
这样可以在测试期间使用预定义的RandomGenerator,并在运行应用程序期间使用随机的RandomGenerator。
下面的代码演示了我上面说明的设置。在keys方法中传递IntegerGenerator并使用它:
public static String keys(IntegerGenerator generator) {
// code to create keys str
int randomInt = generator.nextInt(str.length);
return str[randomInt];
}
interface IntegerGenerator {
public int nextInt(int maximum);
}
class PredefinedIntegerGenerator implements IntegerGenerator {
private final int[] values;
private int index;
public PredefinedIntegerGenerator(int[] values) {
this.values = values;
this.index = 0;
}
@Override
public int nextInt(int maximum) {
if (index >= values.length) {
index = 0;
}
return values[index];
}
}
class RandomIntegerGenerator implements IntegerGenerator {
private final Random random;
public RandomIntegerGenerator(Random random) {
this.random = random;
}
@Override
public int nextInt(int maximum) {
return random.nextInt(maximum);
}
}
答案 1 :(得分:0)
这里有很多代码重复。这是你应该做的,恕我直言。
创建一个静态的最终文本数组,其中包含所有按钮的文本。
创建一个Map<View, String>
,其中包含与每个按钮相关联的文字(除非Android允许将某些文字与按钮相关联,在这种情况下您甚至不需要此地图)。
对于每个按钮添加相同的侦听器:
View.OnCliskListener theListener = new View.OnClickListener() {
public void onClick(View buttonClicked) {
String textOfTheButtonClicked = map.get(buttonClicked);
if (!textOfTheButtonClicked.equals(theTextChosenRandomly)) {
// do what you want here
}
}
};