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 inCommon从 for 循环中删除。永远无法达到外部回报。

于 2013-01-12T20:14:35.537 回答
2

第一条return语句将inCommon在方法有机会完成外循环之前返回值。我根本不确定第一个 return 语句的意义,真的。

于 2013-01-12T20:15:33.387 回答
1

在java中,“return”意味着一个函数的终止,所以如果你在内循环中返回,外循环在任何情况下都不会被执行。

于 2013-01-12T20:28:12.463 回答
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;
}

现在应该好了。您之前所做的是在第一次迭代后跳出嵌套循环。换句话说:由于您的嵌套返回,循环在 counter = 1 之后结束。

于 2013-01-12T20:21:01.733 回答
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 回答