我想编个计算机,脑子里没思路,不知道从何而起,忘指点,谢!
不用图形界面的程序
命令符下的最好,这样好理解代码
谢谢

解决方案 »

  1.   

    可以分两个步骤进行. 1.生成表达式串的逆波兰式. 
    2.对逆波兰式求值. 第一步 步骤: 先用二叉树或是栈的结构,将表达式转化成逆波兰式. 
    比如用栈: (逆波兰式字符串 初值为空串: String pol="";) 
    1.建立符号优先级表,可以用函数f(s1,s2),查询s1,s2的优先级. 比如查询f("+","*"),返回"*",因为*比+优先级高. 
    2.构造一个运算符栈(SignStack),此运算符在栈内遵循越往栈顶优先级越高的原则. 
    3.从左至右开始扫描表达式,如果第i位是数字(起),则取i+1位.直到i+1位为符号止(止).数字即(起)...(止)中间所表示的数字. pol+=数字; 
    4.扫描中遇到符号(记作si)时(非数字),如果si优先级高于SignStack栈顶,则si入栈,否则,pol+=SignStack.pop() (符号出栈跟在表达式后面), 直到si优先级小于栈顶.si入栈 
    5.重复4的过程只到表达式尾,pol就是你的输入串的逆波兰式. 第二步: 
    如果你对第一步的原理了解得非常清楚,这一步就相当简单了. 
    从右至右扫描,遇到数字就入栈, 遇到运算符出栈,用符号计算前面的入栈数,然后把结果入栈,继续向后扫描直到完成,栈顶就是结果. 说明一下. 其实求逆波兰式的过程中,已经可以把结果求出来了. 但是考虑初学者学知识,所以分两步,这样就能充分了解原理. 
      

  2.   

    我是被标题雷进来的,google下逆波兰式.
    要求不同,难度也有区别的,比如对负数的支持,括号的支持,求绝对值(||)的支持等等.
    这样程序的复杂度会有比较大的差距
      

  3.   

    我也是被雷进来的,应该用逆波兰式,但比起图像界面的话就太复杂了
    Java的图形界面机制就是要简化程序复杂度,但楼主 为什么要反其道而行之??
      

  4.   

    看了楼主的title真是晕下。。