APL/DEV 3.2/TP07/Variables/Node.java

66 lines
1.7 KiB
Java
Raw Normal View History

2022-11-24 15:17:33 +01:00
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class Node {
private String value;
private List<Node> subNodes;
public Node(String value) {
this.value = value;
this.subNodes = new ArrayList<>();
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public List<Node> getSubNodes() {
return this.subNodes;
}
public boolean addSubNode(Node node) {
return subNodes.add(node);
}
public boolean remSubNode(Node node) {
return subNodes.remove(node);
}
public int getResult(Map<String, Integer> ids) {
if (subNodes.size() < 2) {
try {
int n = Integer.parseInt(value);
return n;
} catch (NumberFormatException e) {
return ids.get(value);
}
} else {
switch (value) {
case "+":
return subNodes.get(0).getResult(ids) + subNodes.get(1).getResult(ids);
case "-":
return subNodes.get(0).getResult(ids) - subNodes.get(1).getResult(ids);
case "/":
return subNodes.get(0).getResult(ids) / subNodes.get(1).getResult(ids);
case "x":
return subNodes.get(0).getResult(ids) * subNodes.get(1).getResult(ids);
default:
return 0;
}
}
}
public String showNode() {
if (subNodes.size() < 2) {
return value.toString();
} else {
return "(" + subNodes.get(0).showNode() + value.toString() + subNodes.get(1).showNode() + ")";
}
}
}