通过java访问Prolog谓词
执行代码时出错通过java访问Prolog谓词,java,prolog,swi-prolog,Java,Prolog,Swi Prolog,执行代码时出错 Variable X = new Variable(); Term goal= new Compound("parent", new Term []{new Atom("ali"),X}); Query q = new Query(goal); while (q.hasMoreElements()) { Hashtable binding = (Hashtable) q.nextElement(); Te
Variable X = new Variable();
Term goal= new Compound("parent", new Term []{new Atom("ali"),X});
Query q = new Query(goal);
while (q.hasMoreElements()) {
Hashtable binding = (Hashtable) q.nextElement();
Term t = (Term) binding.get(X);
System.out.println(t);
}
错误是
线程“main”java.lang.ClassCastException中的异常:无法将java.util.HashMap转换为java.util.Hashtable
位于newProj.MyMain.main(MyMain.java:18)
Prolog谓词是
parent(ali, rabia).
parent(shomaila, mubashir).
parent(shomaila, rabia).
parent(nadia, ali).
parent(sumiya, shomaila).
parent(raheel, ali).
parent(anwar, shomaila).
parent(sara, anwar).
parent(anwar, sana).
parent(sana,naveed).
试试这个
Query q =new Query("parent("ali",X)")
java.util.Hashtable solution;
while ( q.hasMoreSolutions() ){
solution = q.nextSolution();
System.out.println( "X = " + solution.get(X));
}