((Java) Return if/else if/else 循环后的语句?

((Java) Return statement after if/else if/else loop?

卡在我作业的特定部分:在循环外有一个 return 语句。如果您查看代码,您可以猜测我在这里要做什么。该程序的其余部分有效,但此方法不断给我相同的错误语句:"missing return statement".

private static String HighOrLow (int[] numbers)
 {
     for (int i = 0; i < numbers.length; i++)
     {

        if (numbers[i] > average) {
             return (numbers[i] + "is above the average");
        }
        else if (numbers[i] < average) {
             return (numbers[i] + " is below the average");
        }
        else   {
             return (numbers[i] + " is equal to the average");
        }

    }

我意识到有些东西应该放在 forloop 之外,但不确定如何去做。感谢任何有用的帮助。

4/5/16:首先感谢大家的帮助!我已经准备好并准备开始了……除了每个数字,无论高低,都在高于平均水平。 Paul Guiheen 的想法很正确,我很感激,但我必须为每个数组整数打印单独的行。

如果数字长度为 0,您应该在循环外添加一个 return 语句,这样它就永远不会进入您的 for 函数。

private static String HighOrLow (int[] numbers){
 for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] > average) {
         return (numbers[i] + "is above the average");
    }
    else if (numbers[i] < average) {
         return (numbers[i] + " is below the average");
    }
    else   {
         return (numbers[i] + " is equal to the average");
   }
  }
  return "No numbers founds";
}

同样按照惯例,方法应该以首字母小写开头:

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized.

如果您想计算所有数字,您应该将每个整数的结果存储在数组中,让循环结束,然后 return。

    private static String HighOrLow(int[] numbers) {
        if (numbers.length == 0) {
            return "No numbers provided";
        }

        ArrayList<Integer> above = new ArrayList();
        ArrayList<Integer> equal = new ArrayList();
        ArrayList<Integer> below = new ArrayList();

        for (int i = 0; i < numbers.length; i++) {
            if (numbers[i] > average) {
                above.add(numbers[i]);
            } else if (numbers[i] < average) {
                below.add(numbers[i]);
            } else {
                equal.add(numbers[i]);
            }
        }

        StringBuilder result = new StringBuilder();
        result.append("Above Average: ");
        result.append(above.toString());
        result.append(", ");
        result.append("Below Average: ");
        result.append(below.toString());
        result.append(", ");
        result.append("Average: ");
        result.append(equal.toString());
        return result.toString();
    }