1

私は宝くじクラスを書いていますが、一致する宝くじ番号の量を比較するメソッドを除いて、残りのコードは機能しています。私は自分の人生で、一致の数を数えて返す方法を理解できません。

私はJavaにかなり慣れていないので、これが露骨に明白な答えである場合はお詫びします。

私が使用しているメソッドのコードは次のとおりです。

public int numIntsInCommon(int[] picks){
     int inCommon = 0;

     for (int counter = 0; counter < 5; counter++)
     {
        for (int index = 0; index < 5; index++)
        {
           if (lotteryNumbers[counter] == picks[index])
              inCommon += 1;

        }
        return inCommon;
     }

     return inCommon;
  }

現在のところ、0 しか返されません。どんな助けでも大歓迎です! ありがとう

4

5 に答える 5

2

return inCommonfor ループから を削除します。外側のリターンに到達することはありません。

于 2013-01-12T20:14:35.537 に答える
2

最初のreturnステートメントはinCommon、メソッドが外側のループを完了する前に値を返します。最初の return ステートメントのポイントがまったくわかりません。

于 2013-01-12T20:15:33.387 に答える
1
public int numIntsInCommon(int[] picks)
{
     int inCommon = 0;

     for (int counter = 0; counter < 5; counter++)
     {
        for (int index = 0; index < 5; index++)
        {
           if (lotteryNumbers[counter] == picks[index])
              inCommon++;
        }
     }

     return inCommon;
}

今は大丈夫なはずです。以前に行ったことは、最初の反復後にネストされたループから飛び出すことでした。つまり、ネストされた return のおかげで、counter = 1 の後にループが終了しました。

于 2013-01-12T20:21:01.733 に答える
1

Javaでは、「リターン」は関数の終了を意味するため、内側のループでリターンすると、外側のループは決して実行されません。

于 2013-01-12T20:28:12.463 に答える
0

Java Collections Framework を使用し、lotteryNumbers と picks を List として定義すると、次のように問題を解決するのがはるかに簡単になります。

public int numIntsInCommon(List<Integer> picks) {
    List<Integer> matches = new ArrayList<Integer>(picks);
    matches.retainAll(lotteryNumbers);
    return matches.size();
}
于 2013-01-12T20:40:32.797 に答える