2011-04-29 54 views
0

我的计划是提出问题,对美国各州 测验我创建一个类的三个实例说国家洗牌类实例

State st1 = new State(); 
State st2 = new State(); 
State st3 = new State(); 

喜欢问一个关于状态的问题是什么st1.name 的资本以下是它给3选项

String Builder sb; 
sb.append("What is Capital of "+st1.name+"\n"); 
sb.append("\n"+st1.capital); 
sb.append("\n"+st2.capital); 
sb.append("\n"+st3.capital); 
mainText.setText(sb.toString); 

线现在的问题是每次在第一线与正确答案来了一次... 我如何避免这种情况?

+0

我不知道问题是什么。 “每一次都会在第一行得到正确答案”。那是什么意思?什么是正确答案?代码并没有告诉我们很多。 – EboMike 2011-04-29 21:26:53

+0

我很抱歉没有添加太多细节。 – 2011-04-29 21:28:26

回答

0

把正确的答案随机点使用Java的Random

Random.nextInt(3)会给你一个随机数介于0和2把你的正确答案为在位置大小为3的数组,并将这两个错误答案在其余的地点。然后遍历该数组和sb.append(array[i]);(我介于0和2之间)以获得您的州首府的随机排序。

+0

它的工作原理,但它给出了答案中的重复 – 2011-04-29 22:13:37

+0

每次载入新问题时调用Random.nextInt(3)。 – Haphazard 2011-04-29 22:16:25

+0

我不得不放在一个循环中,并确保循环直到所有三个创建的数字都不相同。 – 2011-04-29 23:04:11

0

创建一个ArrayList,随机抽出这些对象。

此代码是完全未经测试,但我不认为这是太遥远......

这将(理论上)列出完全随机的答案。

ArrayList<State> states = new ArrayList<State>(); 
Random rand; 
states.add(new State()); 
states.add(new State()); 
states.add(new State()); 

sb.append("What is Capital of "+states.get(0).name+"\n"); 
int randomNum = 0; 
while (states.size() > 0) { 
    randomNum = rand.nextInt(1 - states.size() + 1); 
    sb.append("\n"+states.get(randomNum).capital); 
    states.remove(randomNum) 
} 

mainText.setText(sb.toString);