1

こんにちは、ネストされた for ループを使用して、2 つの文字列配列間の一致を見つけようとしています。ただし、それ以上の回数ループしたようです。

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.

< の代わりに <= を使用しようとしましたが、最終的にインデックスが範囲外になりました。

4

3 に答える 3

4

のすべての回答について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]all A'sinと一致し、3rAnswerずつ増加countします。同様に、 forcAnswer[2]もインデックス 0 から始まる all A'sinと一致しrAnswerます。これでよろしいですか?

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);
    }
} 

何か他のことをしたい場合は、詳細を提供してください。

于 2013-04-12T21:55:59.670 に答える
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");
于 2013-04-12T22:04:54.600 に答える
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);
    }
}
于 2013-04-12T21:48:18.230 に答える