Дерево Класс:Преобразование из строки в объект, определенный пользователем. Класс литой исключение
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
}
}
Ошибка:
Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to Tree
at In2Post.evaluateDecisionTree(In2Post.java:138)
at In2Post.main(In2Post.java:59)
Вопрос:
I know we cannot convert a String to an Object. Is there a way to achieve what I am doing ? I cannot change the constructor parameter to String as it would defy my logic in building a decision tree.
Непонятно из вашего сообщения, какой код находится в строке 138 файла In2Post.java, который является местом исключения. –
Извините. Я только что редактировал мой вопрос, включая строку №. 138 как комментарий. строка 59 просто вызывает метод из основного. – Aashil
Определите правильный конструктор со входом строки, затем создайте объект древовидного класса и получите строку в качестве входного сигнала. –