0

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

基本上,这是一个依赖 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);
    }

}

该错误通常发生在标有//的行处,每次我尝试插入类似或其他内容时,程序都会给出一些奇怪的语法错误,例如尝试将其与下面的行一起读取。有什么想法吗?

4

0 回答 0