2011-04-29 83 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);