提问人:Stelios P.98 提问时间:7/1/2023 更新时间:7/2/2023 访问量:40
Java 将新创建的对象作为方法参数传递到该对象的构造函数中
Java passing a newly created object as method argument inside the constructor of that object
问:
我正在尝试用 Java 为游戏实现 UCS 算法,我现在正处于需要计算每个状态的成本的阶段。
我创建了一个包含 4 个字段(状态、成本、父级和子级)的类,其中我有一个方法,它返回从节点过渡到节点的成本。Node
Table
double
Node
ArrayList<Node>
private static double calculateCost(Node starting, Node next)
starting
next
忽略 Table 类,无需解释它的作用。
我还做了以下方法:generateChildren()
public void generateChildren(){
ArrayList<Table> allStates = this.state.generateMoves();
for(Table state : allStates){
Node child = new Node(state, calculateCost(this, ???), this);
children.add(child);
}
}
它从给定状态生成所有可能的移动,并且对于每个移动,它都会创建一个子项。
我想要的是作为 的第二个参数传递,以便该对象是起始节点,而 是下一个节点。可能吗?child
calculateCost()
this
child
答:
1赞
MorganS42
7/2/2023
#1
您可以完全删除该参数,而是将其移动到 Node 构造函数中。您尚未发布 Node 构造函数当前的外观,因此下面的代码只是一个模板,您可以将其映射到当前解决方案:calculateCost(this, ???)
class Node {
* before constructor *
Node(Table state, Node parent) {
this.state = state;
this.parent = parent;
this.cost = calculateCost(parent, this);
* rest of constructor *
}
* after constructor *
}
这应该会产生预期的效果。您的方法现在如下所示:generateChildren
public void generateChildren(){
ArrayList<Table> allStates = this.state.generateMoves();
for(Table state : allStates){
Node child = new Node(state, this);
children.add(child);
}
}
评论