2010-06-03 105 views
2

userAnswer []保存用戶輸入的答案的字符串,並將其與答案[]進行比較,以查看它們是否匹配,然後吐出正確或錯誤。 j等於問題編號。所以如果j是問題6,答案[j]應該參考答案[6]吧? 然後,userAnswer [6]應該與答案[6]進行比較,如果其正確,則匹配。但它給了我錯誤的答案,並顯示我輸入的答案是正確的。數組匹配不正確

int abc, loopCount = 100; 
int j = quesNum, overValue, forLoop = 100; 

for (int loop = 1; loop < loopCount; loop++) 
{ 
    aa = r.nextInt(10+1); 
    abc = (int) aa; 

    String[] userAnswer = new String[x]; 

    JOptionPane.showMessageDialog(null,abc); 

    if(abc < x) 
    { 
     userAnswer[j] = JOptionPane.showInputDialog(null,"Question "+quesNum+"\n"+questions[abc]+"\n\nA: "+a[abc]+"\nB: "+b[abc]+"\nC: "+c[abc]+"\nD: "+d[abc]); 

     if(userAnswer[j].equals(answers[j])) 
     { 
      JOptionPane.showMessageDialog(null,"Correct. \nThe Correct Answer is "+answers[abc]); 
     } 
     else 
     { 
      JOptionPane.showMessageDialog(null,"Wrong. \n The Correct Answer is "+answers[abc]); 
     }//else 

    }//if 

}//for 
+1

JOptionPane看起來像Java,而不是C#或JavaScript,所以我刪除了這些標籤。 – dtb 2010-06-03 13:34:59

+2

它看起來像你正在混合用戶的答案(由j索引)和你問的問題(由abc索引)。你的變量名稱非常殘忍,因此你似乎會迷惑自己。考慮重命名你的變量是有意義的。 – 2010-06-03 13:39:36

回答

4

您的索引命名不佳,而且您自己將它們混淆。您要檢查answers[abc]而不是answers[j]userAnswer[j]

+0

我知道...但我到目前爲止進入該程序我沒有重命名他們,但我會保持變量更好。 – 2010-06-03 13:42:39

+0

修好了!謝謝。是的,我真的需要將變量重命名爲有用的東西。這是一個糟糕的編程習慣。 – 2010-06-03 13:47:25

+0

Jave IDE可以爲您摺疊代碼。更改變量名稱是重構可爲您做的許多令人驚歎的事情之一。 – unholysampler 2010-06-03 13:48:58

0

對於問題6你需要答案[5]因爲數組被索引從0 0開始將是問題1,1。將問題2等

+0

,這取決於。一些程序員將第一個問題稱爲問題0 :) – mihi 2010-06-03 13:41:08

0

userAnswer陣列由for循環作用域。如果你的意思是使用這個循環之外的值,你需要將定義移到循環之外。否則,您現在可以僅使用一個答案字符串,而不是第二次訪問這些值。