【问题标题】:problem of undrestanding return of method [duplicate]方法返回不理解的问题[重复]
【发布时间】:2019-05-16 20:57:09
【问题描述】:

我编译并执行以下 sn-p 代码并打印

A collection coming up.
60

但我不明白为什么“即将推出一个系列”。打印一次

import java.util.ArrayList;
import java.util.Collection;

public class RQ400_100 {

    public static void main(String[] args) {
        int sum = 0;
        for (int i : makeCollection())
            sum += i;
        System.out.println(sum);
    }

    static Collection<Integer> makeCollection() {
        System.out.println("A collection coming up.");
        Collection<Integer> collection = new ArrayList<Integer>();
        collection.add(10); 
        collection.add(20); 
        collection.add(30);
        return collection;
    }
}

【问题讨论】:

  • 请格式化您的代码。很难阅读所有左对齐
  • makeCollection() 在循环条件内,它不会在循环期间每次都执行。如果您希望它多次打印出来,您需要将打印语句放在循环内,或者以另一种方式调整代码。
  • 这里,我已经为您格式化了您发布的代码,但请您考虑自己为以后的问题执行此操作。阅读别人的代码并不容易,因此将其变得比必须的更难是没有意义的。祝你好运。
  • 您希望它被打印多少次? 3?

标签: java


【解决方案1】:

基本上代码是这样运行的:

首先调用main,然后调用makeCollection()。当makeCollection() 被调用时,它会打印'A collectioncoming up',然后创建集合并返回它。然后我们回到 main 并遍历新创建的集合并计算其总和 (60)。然后 main 打印 '60'。

结果是makeCollection被评估一次,main被评估一次,最终结果打印出来

A collection coming up.
60

【讨论】:

    猜你喜欢
    • 2020-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 2017-05-01
    • 2017-10-28
    • 2022-06-10
    相关资源
    最近更新 更多