【问题标题】:Unused parameters in Java with arrayJava中未使用的参数与数组
【发布时间】:2015-10-05 14:08:33
【问题描述】:

我正在编写一个程序,该程序将一个偶数长度的数组从中间拆分并找到两半中最大的一个。这是我到目前为止的代码,但是我不确定在 calculateAverage 方法中作为第一个参数传递什么。任何帮助将不胜感激。

public int calculateAverage(int[] scores, int start, int end) {
    int count = 0;
    int score = 0;
    for (int i = start; i < end; i++) {
        score += scores[i];
        count++;
    }

    score = (score / count);

    return score;
}

public int scoresAverage(int[] scores) {
    int endOfFirstHalf = (scores.length / 2) - 1;
    int firstHalf = calculateAverage(scores[], scores[0], endOfFirstHalf);
    int secondHalf = calculateAverage(scores[], scores[scores.length / 2],     scores[scores.length - 1]);

    if (firstHalf < secondHalf) {
        return secondHalf;
    } else {
        return firstHalf;
    }

}

【问题讨论】:

  • 为什么你有一个你不知道为什么有它的方法?你到底写了什么?
  • 好点@Dici...您必须将scores 数组从scoresAverage 方法传递给calculateAverage 方法
  • 如果您致电calculateAverage,我会通过(scores, 0, endOfFirstHalf);(scores, endOfFirstHalf, scores.Length);
  • 您的第二种方法不计算平均值。即使您将正确的参数传递给 caculateAverage(您没有),它也会返回具有较高平均值的一半数组的平均值。
  • 我只想返回平均值最高的一半,而不是返回平均值。我已将代码更新为我所拥有的。我只是在 calculateAverage 方法的第一个参数上遇到错误,因为我不确定要传递什么。

标签: java arrays methods parameters


【解决方案1】:

请试试这个。

public class TestBench{
        public static void main(String[] args){
            int[] i = {1,2,3,4};
            System.out.println(scoresAverage(i));
       }

        public static double calculateAverage(int[] scores, int start, int end) {
            int count = 0;
            double score = 0.0;
            for (int i = start; i <= end; i++) {
                score += scores[i];
                count++;
            }
            score = (score / count);

            return score;
        }

        public static double scoresAverage(int[] scores) {
            int endOfFirstHalf = (scores.length / 2) - 1;
            double firstHalf = calculateAverage(scores, 0, endOfFirstHalf);
            double secondHalf = calculateAverage(scores, endOfFirstHalf + 1, scores.length - 1);

            if (firstHalf < secondHalf) {
                return secondHalf;
            } else {
                return firstHalf;
            }
        }
    }

【讨论】:

    【解决方案2】:
    int secondHalf = calculateAverage(scores[scores.length / 2], 
                                            scores[scores.length - 1]);
    

    1.你的方法名有错别字。

    2.传递一个数组名。应该有 3 个参数,而不是 2 个。

    看起来应该是这样的:

    int firstHalf = calculateAverage(scores, 0, endOfFirstHalf);
        int secondHalf = calculateAverage(scores,scores[scores.length / 2], 
                                                scores[scores.length - 1]);
    

    【讨论】:

      【解决方案3】:

      你应该传递你的函数所期望的。无论如何,这是修改后的代码:

      public class UnusedParam {
      public int calculateAverage(int[] scores, int start, int end) {
          int count = 0;
          int score = 0;
      
          for (int i = start; i <= end; i++) {
              score += scores[i];
              count++;
          }
          score = (score / count);
      
          return score;
      }
      
      public int scoresAverage(int[] scores) {
          int endOfFirstHalf = (scores.length / 2) - 1;
          int firstHalf = calculateAverage(scores, 0, endOfFirstHalf);
          int secondHalf = calculateAverage(scores,scores.length / 2, scores.length - 1);
      
          if (firstHalf == secondHalf) {
              System.out.print("First Half is the same as Second Half");
              return secondHalf;
          }
          else if (firstHalf < secondHalf) {
              System.out.print("Second Half is the largest");
              return secondHalf;
          } 
          else {
              System.out.print("First Half is the largest");
              return firstHalf;
          }
      }
      
      public static void main(String[] args) {
      
          int[] scores = {1,2,3,4,5,6,7,8};
      
          UnusedParam up = new UnusedParam();
          int retVal = up.scoresAverage(scores);
          System.out.println(", "+retVal);
      }
      }
      

      【讨论】:

      • scoresAverage() 方法的 if 块和 else 块返回的值是多少?两者不一样吗?
      猜你喜欢
      • 2013-04-04
      • 1970-01-01
      • 2023-02-07
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多