当前位置:编程学习 > JAVA >>

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 ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,