当前位置:  技术问答>java相关

各位大虾!!请帮忙啊!救小弟一把!我编的一个中缀转后缀的程序,便已通过可是运行却出错,请指教!!

    来源: 互联网  发布时间:2015-05-21

    本文导语:  运行错误是:       please input the inorder expression 1+2 the postorder expression is Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1         at java.lang.String.charAt(String.java:507)     ...

运行错误是:      
please input the inorder expression
1+2
the postorder expression is
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String
index out of range: -1
        at java.lang.String.charAt(String.java:507)
        at stack1.main(stack1.java:18)
源码如下:
import java.io.*;
public class stack1{
         public static void main(String args[]){ 
          stackarray operator=new stackarray();
          String inorder=new String();
          int inposition=0;
          int operator1=0;
          System.out.println("please input the inorder expression");
          BufferedReader input=new BufferedReader(new InputStreamReader(System.in));
          try{
          inorder=input.readLine();}
          catch(IOException e){
          System.out.println(e);}
          System.out.println("the postorder expression is");
         
          for(inposition=-1;;inposition++){
          while (true){
          if(operator.isoperator(inorder.charAt(inposition))){
          if((operator.top==-1)||(char)inorder.charAt(inposition)=='(')
                     operator.push(inorder.charAt(inposition));
                  else
          {   if((char)inorder.charAt(inposition)==')')
                {if(operator.astack[operator.top]!=40)
                   {operator1=operator.pop();
                       System.out.print((char)operator1);
          }
          }
          else
          {if(operator.priority(inorder.charAt(inposition))
          =inorder.length())
                break;
                
            }
           while(operator.top!=-1)
            {
             operator1=operator.pop();
             System.out.print((char)operator1);
            }
        }
        }
    }
        class stackarray{
         int maxsize=20;
         int[] astack=new int[maxsize];
         int top=-1;
         public void push(int value){
         int i;
         if(top>=maxsize)
         System.out.println("the stack is full");
         else{
         top++;
         astack[top]=value;
         }
         }
         public int pop(){
         int temp;
         int i;
         if(top

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大虾,小弟有一事不明,请大虾赐教!
  • 在solaris下如何卸载wu-ftpd???????????????????????谢谢大虾!!!!!!!!!!
  • 请大虾们谈谈linux和unix的异同吧
  • 请大虾,详细介绍一下JavaBean的写法,和调用过程!
  • 对LDAP有研究的大虾请进,见者有分
  • 超级新手菜鸟请问各位大虾!
  • 各位大虾,一个初学者该怎样开始学习java?
  • 请问各位大虾,什么地方有Jsp学习资料?
  • 哪位大虾知道weblogic与websphere的差别?
  • 大虾救命!APACHE没有理睬JSP?!!!
  • 请问各位大虾,如何把一个String赋值给一个Char[]??
  • 大虾救命啊!!!50分!!!
  • 哪位大虾指点一下哪里有weblogic下载啊???
  • 请问各位unix大虾,哪有免费的unix下载?
  • 初学者求救!!哪位大虾给点源代码?
  • 在下初学java,请各位大虾推荐几个java学习网站吧!
  • 请各位大虾介绍几个好一点的linux论坛,谢谢!
  • 大虾救命,dos下面怎么输入中文?
  • 请问大虾们,如何学习linux?
  • session里面可以放整型数吗?大虾请指教!!!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3