2016-11-24 28 views
0
public static int readConvert(char[]post)throws IOException{ 
    Stack S = new Stack(); 
    int j=0; 
    char c; 
    System.out.printf("Type an infix expression and press Enter\n"); 
    char token =getToken(); 
    while (token!='\0'){ 
     if (Character.isDigit(token))post [j++]=token; 
     else if (token =='(')S.push(new NodeData('(')); 
     else if (token ==')') 
      while ((c=S.pop().getData())!='(')post[j++]=c; 
     else { 
      while (!S.empty() && precedence(S.peek().getData())>= precedence(token)) 
      post[j++]=S.pop().getData(); 
      S.push(new NodeData(token)); 
     } 
     token=getToken(); 
    } 
    while (!S.empty())post[j++]=S.pop().getData(); 
    return j; 

} 

问题:(1)那为什么日食是告诉我,我的getData()是未定义的类型对象。未定义的类型对象缀与postfix

类我创建:

public class Node{ 
    public NodeData data; 
    NodeData next; 
    public Node(Nodedata d){ 
     data = d; 
     next = null; 
    } 
    public class NodeData{ 
    char ch; 

    public NodeData(char c){ 
     ch =c; 
    } 
    public char getData() {return ch;} 

    public int compareTo(NodeData nd){ 
     if (this.ch ==nd.ch)return 0; 
     if (this.ch<nd.ch) return -1; 
     return 1; 
    } 
    public String toString(){ 
     return ch + " "; //" " needed to convert num to a string 
    } 
    } 
    } 

问题:(2)为什么,当我尝试编译日食表明NODEDATA不能成为解决的类型。

回答

0
  1. pop方法返回Stack使用的类型,所以尽量

堆栈<NODEDATA>堆栈=新堆栈<NODEDATA>();

  1. 拼写?

边注:也许很好看naming convention