【问题标题】:Arrays not matching correctly数组不正确匹配
【发布时间】:2010-06-03 13:33:16
【问题描述】:

userAnswer[] 保存用户输入的答案字符串,并将其与 answers[] 进行比较以查看它们是否匹配,然后吐出正确或错误。 j 等于问题编号。因此,如果 j 是问题 6,则 answers[j] 应该引用 answers[6] 对吗? 然后 userAnswer[6] 应该与 answers[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

【问题讨论】:

  • JOptionPane 看起来像 Java,而不是 C# 或 JavaScript,所以我删除了这些标签。
  • 看起来您将用户答案(由 j 索引)与您提出的问题(由 abc 索引)混合在一起。您的变量名称很糟糕,因此您似乎很困惑。考虑重命名变量以使其有意义。

标签: java arrays


【解决方案1】:

您的索引命名不佳,并且您自己将它们混合在一起。您想检查 answers[abc] 而不是 answers[j]userAnswer[j]

【讨论】:

  • 我知道...但是我对程序的了解太深了,我没有重命名它们,但我会更好地保留变量。
  • 解决了!谢谢。是的,我真的需要努力将变量重命名为有用的东西。这是一个糟糕的编程习惯。
  • Jave IDE 可以为您重构代码。更改变量名是重构可以为您做的许多令人惊奇的事情之一。
【解决方案2】:

对于第 6 题,您需要答案[5],因为数组的索引从 0 开始。0 表示问题 1,1 表示问题 2,以此类推。

【讨论】:

  • 这取决于。一些程序员将第一个问题称为问题 0 :)
【解决方案3】:

您的 userAnswer 数组由 for 循环限定。如果您打算使用此循环之外的值,则需要将定义移到循环之外。否则,您可以只使用一个答案字符串,因为您现在没有第二次访问这些值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2016-11-11
    • 2022-10-08
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多