2013-04-12 94 views
1

嗨我试图找到使用嵌套for循环两个字符串数组之间的匹配。然而它似乎已经环绕了更多次。比较两个字符串数组与嵌套For循环

for(int i = 0; i < ca; i++) //ca contains 10 
{ 
    for(int j = 0; j < ra; j++) //ra contains 10 
    { 
     if(cAnswers[i].equals(rAnswers[j])) 
     { 
      count++; //Increments count to indicate a match 
      System.out.println("The current count: " + count); //To check the count 
     } 
    } 
} 
System.out.println("The number of correct questions is " + count + "/10"); //The result currently gives me 50/10 no matter what. 

我尝试使用< =,而不是仅仅<,但最终得到一个索引越界。

+0

什么是cAnswers和rAnswers的可能值?这似乎与MCQ类型的答案类似。如果是这样,一旦cAnswers [i]匹配一些东西,你不应该从内部循环中跳出来并转到下一个cAnswers? – devang

+0

你的比赛是否需要在同一个索引或无所谓? – jlordo

回答

3

对于每一个答案cAnswer,你会在所有的答案中rAnswer

String rAnswer[] = {"A", "B", "A", "D", "A", "F", "G", "H", "I", "J"}; 

而且

String cAnswer[] = {"A", "B", "A", "D", "A", "F", "G", "A", "I", "A"}; 

它将匹配cAnswer[0]rAnswer所有A's,由3递增count同样,对于cAnswer[2]它将再次匹配所有A'srAnswer从指数0开始请问这是什么你要?

如果你想要做一个线性匹配,即cAnswer[0]rAnswer[0]一个循环就足够了..

for(int i = 0; i < cAnswers.length && i < rAnswers.length; i++) 
{ 
    if(cAnswers[i].equals(rAnswers[i])) 
    { 
     count++; //Increments count to indicate a match 
     System.out.println("The current count: " + count); 
    } 
} 

如果你想别的做一些事情,帮助我们提供更多的细节帮助你。

+0

嗨,我只想匹配cAnswer [0]和rAnswer [0]。我以为我需要一个嵌套的循环才能访问每个元素。您的答案足够了,它现在可以正常工作。谢谢 – user1832478

0

不需要嵌套的循环为:

for(int i = 0; i < cAnswers.length && i < rAnswers.length; i++) 
{ 
    if(cAnswers[i].equals(rAnswers[i])) 
    {       //^
     count++; //Increments count to indicate a match 
     System.out.println("The current count: " + count); 
    } 
} 
2

一个更好的解决方案:

Set<String> set = new HashSet<>(Arrays.asList(cAnswers)); 
set.retainAll(Arrays.asList(rAnswers)); 
System.out.println("The number of correct questions is " + set.size() + "/10");