树类:
public class Tree {
String data;
Tree left,right;
public Tree(String data, Tree left, Tree right){
this.data = data;
this.left = left;
this.right = right;
}
}
另一个包含特定方法的类:
public static void evaluateDecisionTree(String s){
//String s is a post-fix converted expression.
String tokens[] = s.split(" +");
Stack tree_stack = new Stack();
Tree root;
for(int i=0; i < tokens.length; i++){
if(tokens[i].matches("[-]?[0-9][0-9]*")){
tree_stack.push(tokens[i]);
}
else if(tokens[i].equals("!")){
tree_stack.push(new Tree(tokens[i], (Tree) tree_stack.pop()));
}
else{
tree_stack.push(new Tree(tokens[i], (Tree) tree_stack.pop())); //line 138
}
}
错误:
线程中的异常&#34; main&#34; java.lang.ClassCastException:java.lang.String无法强制转换为Tree
在In2Post.evaluateDecisionTree(In2Post.java:138)
在In2Post.main(In2Post.java:59)
问题:
我知道我们无法将String转换为Object。有没有办法实现我的目标?我无法将构造函数参数更改为String,因为它会在构建决策树时违反我的逻辑。
答案 0 :(得分:0)
您正在尝试将String转换为Tree,因为堆栈对象包含从split()返回的String对象。并且java.lang.String不是树。