内部接口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
.
的成员调用
我用内部 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
.