【问题标题】:((Java) Return statement after if/else if/else loop?((Java) if/else if/else 循环后的返回语句?
【发布时间】:2016-07-23 10:49:53
【问题描述】:

卡在我的任务的特定部分:在循环之外有一个 return 语句。如果您查看代码,您可以猜测我在这里尝试做什么。程序的其余部分可以工作,但是这个方法总是给我同样的错误语句:“缺少返回语句”。

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 有正确的想法,我很感激,但我必须为每个数组整数打印单独的行。

【问题讨论】:

  • 如果您的方法在第一次迭代后返回,那么循环是没有意义的。实际上并不清楚您要做什么。
  • 始终确保包含对您的代码试图完成的内容的描述。

标签: java if-statement return static-methods


【解决方案1】:

如果数字长度为 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";
}

同样按照惯例方法应该以第一个小写字母开头:

方法应该是动词,大小写混合,首字母小写,每个内部单词的首字母大写。

【讨论】:

  • 如果这确实是代码的意图,那么将方法顶部的for循环更改为if (numbers.length == 0) return "No numbers found"会更清楚。
【解决方案2】:

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

    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();
    }

【讨论】:

  • 感谢您的额外帮助。事情是我需要它来正确读入方法。格式打印正常,但一切都高于平均水平。
猜你喜欢
  • 2015-10-28
  • 2017-02-17
  • 2021-08-31
  • 2015-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多