我正在试图弄清楚如何引用2个字符串数组的索引。在checkAnswer方法中,我可以确认用户输入存储在index [i]的capitalArray中但是如何比较capitalArray [i] == stateArray [i]的索引而不是比较存储在index [i] <的字符串< / p>
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;
}
答案 0 :(得分:0)
只需使用Hashmap存储资本和州。你使用2个数组使它变得复杂。 Hashmap可以将状态作为键和资本作为vaule,现在您可以轻松地进行迭代和检查。
编辑:
当您知道资本和州将处于相同的索引时,您将通过比较2个数组的索引来实现什么?一旦你在资本阵列中获得了大量资金,你就完成了。无需检查状态数组。
但我不建议使用数组方法。
编辑:
在开始循环之前检查两个数组是否具有相同的长度就足够了,如果你想要进行验证那么
答案 1 :(得分: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
与capitalArray
进行比较,然后查看capitalArray[i]
和stateArray[i]
是否为相同的字符串。当然后者不是真的。