我是一名计算机科学专业的学生,刚开始我的二年级编程课,我在处理堆栈和集合的项目时遇到了一些实际问题。
基本上,这是一个依赖 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);
}
}
该错误通常发生在标有//的行处,每次我尝试插入类似或其他内容时,程序都会给出一些奇怪的语法错误,例如尝试将其与下面的行一起读取。有什么想法吗?