要在java中堆栈的数组,并删除运算符
我有一个数组(25*ax+c-d/2),我想把所有的东西都放在堆栈中,然后删除操作符(*;+;-;/),并在堆栈实现的末尾(25;ax;c;d) 现在我有:要在java中堆栈的数组,并删除运算符,java,arrays,stack,Java,Arrays,Stack,我有一个数组(25*ax+c-d/2),我想把所有的东西都放在堆栈中,然后删除操作符(*;+;-;/),并在堆栈实现的末尾(25;ax;c;d) 现在我有: import java.util.*; 公共类StackDemo{ 公共静态void main(字符串参数[]) { //创建数组 ArrayList al=新的ArrayList(); //添加到数组 新增(“25*ax+c-d/2”); //创建堆栈 堆栈=新堆栈(); //向堆栈添加数组 for(字符串str:al) STACK.
import java.util.*;
公共类StackDemo{
公共静态void main(字符串参数[])
{
//创建数组
ArrayList al=新的ArrayList();
//添加到数组
新增(“25*ax+c-d/2”);
//创建堆栈
堆栈=新堆栈();
//向堆栈添加数组
for(字符串str:al)
STACK.add(str);
//显示堆栈
System.out.println(“初始堆栈:“+堆栈”);
}
}
您可以使用正则表达式使用运算符拆分表达式:
public static void main(String[] args) {
//Creating array
List<String> al = Arrays.asList("25*ax+c-d/2".split("[\\*+/-]"));
//Creating a stack
Stack<String> STACK = new Stack<String>();
//Adding array to stack
for(String str : al)
STACK.add(str);
// Displaying the Stack
System.out.println("Initial Stack: " + STACK);
}
您的解决方案离功能性还差得很远。作为提示,您可以从编写一些逻辑开始,这些逻辑可以识别可能出现在代数表达式中的一个或多个标记。这里,令牌表示例如数字(例如
25
)或运算符(例如+
或-
)。然后,您的代码需要读取每个标记,一次读取一个,然后通过将它们放在堆栈上或进行数学运算来确定如何处理它们。我不需要进行数学运算,我只需要删除数组的运算符并将结果放在堆栈的不同位置。为什么?很难看出它的效用。在某个时刻,您肯定要计算表达式?在完全理解问题之前,不要设计解决方案。提示:Dijkstra调车场算法。你唯一需要逃离这里的是*
。没错,应该是“[\*+/-]”,我正在更新答案。
Initial Stack: [25, ax, c, d, 2]