Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要在java中堆栈的数组,并删除运算符_Java_Arrays_Stack - Fatal编程技术网

要在java中堆栈的数组,并删除运算符

要在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.

我有一个数组(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.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]