java堆栈获取后缀表达式
类中存在好多System.out,是调试作用的,可能看起来会很多余,自己可以删掉,代码看起来就干净多了。java中本身也有内置好了的堆栈,也可以看下
[java]
package com.example.hanhan;
import java.util.ArrayList; www.zzzyk.com
public class Stack {
String[] code=new String[100]; //数组用来实现栈
int top=0; //栈顶的表示下表
String result=""; //结果后缀表达式
/**
* @param editText <span style="color:#ff0000;"><strong>获取到文本框的text后条用下面的
* getArray方法获取到数字和操作符的数组进行循环遍历操作
</strong></span> */
public String getHuZhui(String editText)
{
System.out.println("进入方法");
if(editText!=""&&editText.length()>0)
{
System.out.println(editText);
//将string转为数组
ArrayList<String> str=getArray(editText);
System.out.println("进入操作");
System.out.println("调用的大小:"+str.size());
//传来的字符串长度不为零才有效,遍历所有的操作符,放入堆栈中
for(int i=0;i<str.size();i++)
{
System.out.println("操作符号:"+str.get(i));
System.out.println("进入循环");
if(str.get(i).equals("(")) //碰到左括号就入栈
{
code[++top]="(";
System.out.println("栈值:"+code[top]);
System.out.println("左括号");
}
else if(str.get(i).equals("*")) //碰到乘号,如果栈顶是除号则推出除号
{
while("/".equals(code[top]))
{
result+=code[top]+","; //操作符出栈
top--;
}
code[++top]="*"; //乘号入栈
System.out.println("栈值:"+code[top]);
System.out.println("乘号");
}
else if(str.get(i).equals("/")) //碰到乘号,如果栈顶是除号就出栈
{
while("*".equals(code[top]))
{
result+=code[top]+","; //操作符出栈
top--;
}
code[++top]="/"; //除号入栈
System.out.println("栈值:"+code[top]);
System.out.println("除号");
}
else if(str.get(i).equals("+"))
{
while(("*".equals(code[top]))||("/").equals(code[top])||("-").equals(code[top]))
{
result+=code[top]+","; //操作符出栈
top--;
}
code[++top]="+"; //加号入栈
System.out.println("栈值:"+code[top]);
System.out.println("加号处理后:"+result);
}
else if(str.get(i).equals("-"))
{&nbs
补充:软件开发 , Java ,