2

我怀疑我在编写“lowestScore”方法时犯了一个错误(我或多或少否定了我的“largestScore”方法,因为它始终返回正确的值(数组中的最高分数)。但由于某种原因,我的最低分数方法要么只是返回数组中的第一个元素或某个任意数字,甚至从数组中返回。有什么想法吗?

    public static double highestScore(double[] scores)
    {
      double max = scores[0];
      for (int i=0; i < scores.length; i++) {
        if (scores[i] > max) {
          max = scores[i];
        }
      }
      return max;
    }

    public static double lowestScore(double[] scores)  //possible problem some where in
    {                                                  //here?
      double min = scores[0];
      for (int i=0; i > scores.length; i++) {
        if (scores[i] < min) {
          min = scores[i];
        }
      }
      return min;
    }
4

2 回答 2

6

是的,问题出在lowestScore. 你反转了<and >,但你仍然应该循环你的整个数组。在您的代码中,i > scores.length0 > scores.length最初)评估为false,因此不会执行循环并且min始终等于scores[0]

改变

for (int i=0; i > scores.length; i++)

for (int i=0; i < scores.length; i++)
于 2013-05-07T14:23:04.087 回答
2
public static double lowestScore(double[] scores)  //possible problem some where in
{                                                  //here?
  double min = scores[0];
  for (int i=0; i > scores.length; i++) {
    if (scores[i] < min) {
      min = scores[i];
    }
  }
  return min;
}

for (int i=0; i > scores.length; i++) {。条件是“如果i大于则继续循环scores.length”。当i现在初始化为 0 时,它永远不会大于数组的大小。因此,循环立即结束,返回值是数组的第一个元素,在循环之前设置。

PS这很容易理解错误,您只是在更改为时颠倒了s<>s 。highestScorelowestScore

于 2013-05-07T14:25:55.557 回答