内部接口class

Inner interface class

我用内部 class 和 return 的平均值进行了测试,但我无法让它正常工作。

我有一个 class,它有一个带有 2 个方法的内部接口,我需要从另一个 class 测试它,但似乎没有任何东西愿意工作。

试了很多方法还是不知道哪里出了问题?

有人可以看看并尝试告诉我我做错了什么,或者告诉我我需要做什么来测试 class BetterProgrammerTask 吗?

我将添加带有内部接口的 class 和尝试使用它的测试 class。

测试程序为:

public class BetterProgrammerTask {

    // Please do not change this interface
    public static interface Node {
        int getValue();

        List<Node> getChildren();
    }

    // Please do not change this interface

    public static double getAverage(Node root) {
        /*
          Please implement this method to
          return the average of all node values (Node.getValue()) in the tree.
         */
        int suma = root.getValue() + suma(root.getChildren());
        int count = 1 + count(root.getChildren());
        return suma / count;
    }

    private static int suma(List<Node> nodes) {
        if (nodes == null || nodes.isEmpty()) {
            return 0;
        }
        int suma = 0;
        for (Node n : nodes) {
            suma += n.getValue() + suma(n.getChildren());
        }
        return suma;
    }

    private static int count(List<Node> nodes) {
        if (nodes == null || nodes.isEmpty()) {
            return 0;
        }
        int suma = 0;
        for (Node n : nodes) {
            suma += 1 + count(n.getChildren());
        }
        return suma;
    }
}

测试方法class是:

import main.java.org.example.BetterProgrammerTask.Node;

public class TestBetterProgrammerTask implements BetterProgrammerTask.Node {

    public static void main(String[] args) {

        int sum = 0;
        double sumDouble = 0;
        System.out.println("EXAMPLE III");
        // get NodeImpl

        //
        // getAverage does not accept my node definition ?????
        //
        sumDouble = getAverage(Node);


        DecimalFormat four = new DecimalFormat("#0.00");
        System.out.println("For this process the node average calculated is  " + four.format(sumDouble));
    }

    //
    // and average and getChildren are not filled yet and still did not 
    // due to errors in the getAverage
    //
    @Override
    public int getValue() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public List<BetterProgrammerTask.Node> getChildren() {
        // TODO Auto-generated method stub
        return null;
    }
}

import static 导入 getAverage 等方法。并创建一个 Node

的实例
package main.java.org.example;

import java.text.DecimalFormat;
import java.util.List;

import static main.java.org.example.BetterProgrammerTask.getAverage;

public class TestBetterProgrammerTask implements BetterProgrammerTask.Node {

    public static void main(String[] args) {

        int sum = 0;
        double sumDouble = 0;
        System.out.println("EXAMPLE III");
        // get NodeImpl

        BetterProgrammerTask.Node node = new TestBetterProgrammerTask();
        sumDouble = getAverage(node);

//rest unchanged

注意:我也不建议使用 main.java 作为包的一部分。

NB2:如果您使用 Java,则可以使用 Default Methods 8. 将 getAverage 作为方法放置,在节点接口上实现,不必导入静态方法并将其作为 Node.

的成员调用