我使用数据库只需按一下按钮即可显示随机消息。
每次按下按钮,都会生成一个随机数,并显示与该数字对应的消息。 当然,相同的消息可以出现两次,因为可以生成两次相同的数字。
所以我正在创建一个字符串,当按下按钮时,我会连接每个数字。
如果新的随机数在String中,那么我想得到另一个数字。如果那个数字在那个字符串中,我想得到另一个数字等等(回归?)。
我还希望有一个可以更改的全局计数,因此如果String达到9个数字的大小,它将被重置为""。
String randomList; //global
final int MAX_STRING_LENGTH = 9;
Integer randomNumber = getRandomMessage(messages.size());
if(randomList.length() > 0)
{
if(!randoms.contains(randomNumber.toString()))
{
messageText.setText(messages.get(randomNumber));
}
}
答案 0 :(得分:0)
我认为你可以更好地使用boolean
数组。您可以使用SharedPreferences
类存储布尔数组。 boolean
数组更灵活,您可以在固定时间内检索值。当您有更多随机消息时,您也可以轻松地将其放大。
答案 1 :(得分:0)
创建一个包含9个元素的布尔数组
boolean[] check = new boolean[9];
每次使用数字时,请将check [number]设置为true
void useNumber(int number){
check[number] = true;
}
检查您是否已使用此号码
boolean checkNumber(int number){
return check[number];
}
重置支票
void resetCheck(){
for(int i = 0; i < check.length; i++) check[i] = false;
}
编辑: 获取给定数字的字符串,必要时重置检查;
String getString(int number){
if(usedString == check.length){
resetCheck();
usedString = 0;
}
if(checkNumber(number)){
return getString(getRandomNumber());
}else{
usedString++;
return strings[number];
}
}
答案 2 :(得分:0)
做一个简单的技巧希望这对你有用
buttonRandom.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Collections.shuffle(messages);
messageText.setText(messages.get(0));
}
});