参数化堆栈中的语法错误

时间:2013-09-24 01:56:28

标签: java syntax-error generic-collections stack

我是一名计算机科学专业的学生刚刚开始我的二年级编程课程,而且我在处理Stacks和集合的项目中遇到了一些实际问题。

基本上,这是一个依赖于ArrayStack类(特定于ArrayStack)的项目,用于在后缀和中缀形式之间转换数学表达式。

基本上,ArrayStack用于接受类似45 *(26 - 5)/ 54的表达式,将其转换为集合,然后以后缀形式重写,如45 26 5 - * 54 /

问题是,首先,每当我尝试在main方法中用Character替换时(因为堆栈需要存储运算符和操作数,也许这里有一个更好的数据类型,我在这里丢失),我得到了一些奇怪的语法错误,通常涉及程序认为ArrayStack.System以某种方式是一个语句(System.out.println正好在ArrayStack语句下面,这表明存在某种语法问题)

这是我到目前为止的代码:

public class ArrayStack<T> implements StackADT<T>
{   
    private static final int DEFAULT_CAPACITY = 100;
    private int top;
    private T[] stack;

    public ArrayStack() {
        top = -1;
        stack = (T[]) (new Object[DEFAULT_CAPACITY]);
    }
    public void push(T element) {
        stack[top+1] = element;
        top++;
    }
    public T pop()  {
        T element = stack[top];
        stack[top] = null;
        top--;
        return element;
    }
    public T peek() {
        return stack[top];
    }
    public boolean isEmpty()    {
        if(stack[0]==null)
            return true;
        else{
            return false;
        }
    }
    public int size()   {
        int length = 0;
        for(int count=0;count<stack.length;count++) {
            if(stack[count]!=null)  {
                length++;
            }
            else if(stack[count]==null) {
                break;
            }
        }
        return length;
    }
    public String toString()    {
        String array = "";
        for(int count=0;count<stack.length;count++) {
            array = array+stack[count]+" ";
        }
        return array;
    }


}

对于主要方法:

public class StackTester {
    public static void main(String[] args)  {
        boolean quit = false;
        int input;
        String expression;
        do  {
            System.out.println("1. Convert infix to postfix");
            System.out.println("2. Convert postfix to infix");
            System.out.println("3. Exit.");

            java.util.Scanner keyboard = new java.util.Scanner(System.in);
            input = keyboard.nextInt();

            switch(input)   {
            case 1:
                //ArrayStack stack = new ArrayStack();
                //System.out.println("Enter an infix expression: ");
                expression = keyboard.next();
                for(int count=0;count<expression.length();count++)  {
                    Character a = expression.charAt(count);
                    stack.push(a);
                }
                for(int count=stack.size()-1;count>=0;count--)  {
                    if(stack.peek()=='+')   {

                    }
                }

            }
            break;
        }

        while(!quit);
    }

}

错误通常发生在用//标记的行上,每当我尝试插入类似的东西时,程序会给出一些奇怪的语法错误,就像它试图将它与下面的行一起读取一样。任何想法在这里发生了什么?

0 个答案:

没有答案