0

我试图弄清楚如何引用 2 个字符串数组的索引。在 checkAnswer 方法中,我可以确认用户输入存储在索引 [i] 处的 capitalArray 但如何比较 capitalArray[i] == stateArray[i] 的索引而不是比较存储在索引 [i] 处的字符串

        public static void main{ 
        ...

        for (int i = 1; i <=10;  i++){

        System.out.println("What is the capital of " + stateArray[randomQuestion(0)]"?");
        answer = in.nextLine();

        if (checkAnswer(stateArray, capitalArray, answer) == true)
        {
            correct++;
        }
        total = i;
    }
  }

   public static boolean checkAnswer(String[]stateArray, String[]capitalArray, String answer) {

    for (int i = 0; i < stateArray.length; i++) 
    {
        if (capitalArray[i].equalsIgnoreCase(answer) && capitalArray[i] == stateArray[i])    
        {
            return true;
        }
    }

    return false;
}
4

2 回答 2

0

只需使用 Hashmap 来存储资本和状态。您通过使用 2 个数组使其变得复杂。Hashmap 可以将 state 作为 key,将 capital 作为 vaule,现在您可以轻松地进行迭代和检查。

编辑:

当您知道 capital 和 state 将处于相同索引时,那么通过比较 2 个数组的索引您将获得什么?一旦你在资本阵列中拥有了喜欢的资本,你就完成了。无需检查状态数组。

但我不会推荐数组方法。

编辑:

在开始 for 循环之前检查两个数组是否具有相同的长度就足够了,如果您想要进行验证

于 2013-04-06T17:35:54.477 回答
0

您应该确定要使用的随机状态,保留该索引,然后capitalArray根据同一索引中的 来检查用户的输入。检查答案时无需遍历两个数组。

像这样的东西:

index = Random.nextInt(50);  // random number between 0-49

System.out.println("Enter the capital for " + states[index] + ":");
String answer = in.nextLine();


//Precondition: the arrays for the capitals and state must be in the correct order for
//this to work properly
if ( capitals[index].equalsIgnoreCase( answer ) )
{
    return true;
}
else
{
    return false;
}

您拥有的checkAnswer功能是比较然后查看是否answer和是相同的字符串。当然后者不是真的。capitalArraycapitalArray[i]stateArray[i]

于 2013-04-06T18:04:02.213 回答