【问题标题】:Returning a variable from nested for loops从嵌套的 for 循环中返回一个变量
【发布时间】:2012-12-27 04:14:54
【问题描述】:

我正在编写一个彩票类,我的其余代码都在工作,除了比较匹配彩票号码数量的方法。我这辈子都不知道如何记录比赛的数量并将其归还。

我对 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。 任何帮助将不胜感激!谢谢

【问题讨论】:

  • 你打算有内部的return语句吗?这可能会缩短您的执行时间并提前返回一个值。

标签: java arrays loops methods


【解决方案1】:

从 for 循环中删除 return inCommon。永远无法达到外部回报。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:
      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 之后结束。

      【讨论】:

      • 什么index?没有任何indexuser... 放在首位return。只有counter变量
      • 哦,是的,我忘记了第一次返回在哪里。它不在嵌套循环中,它在它之外。谢谢!
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        如果您使用 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();
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-25
          • 2021-12-11
          • 1970-01-01
          • 2011-12-05
          相关资源
          最近更新 更多