后缀表达式的求值

后缀表达式的求值
步骤:
1.将后缀表达式以空格进行拆分,用字符串数组存储每个部分
2.创建一个字符串型的栈用于存储后缀表达式中的数字
3.对字符串数组进行遍历。如果是数字,就入栈; 如果是运算 符,就从栈中出来两个元素,将这两个元素的类型改变为整数类型,配合该运算符进行运算,将运算结果转换为字符串后重新入栈;重复此过程,直到遍历结束
4.输出栈中的栈顶元素(此时栈中只有一个元素),即为后缀表达式的值
代码如下:

public class Demo1 extends JFrame{
	private static JTextField textField;
	private static JButton button;
	private static JTextArea textArea;
	private static Stack<String> stack;
	public Demo1() {
		// TODO Auto-generated constructor stub
		setTitle("后缀表达式的运算");
		setLayout(null);
		setBounds(200,200,400,400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		textField = new JTextField(20);
		textField.setBounds(30,30,330,30);
		button = new JButton("转换");
		button.setBounds(150,100,60,30);
		button.addActionListener(new myActionListener());
		textArea = new JTextArea();
		textArea.setBounds(30,180,300,150);
		textArea.setBorder(new LineBorder(Color.BLACK,2));
		add(textField);
		add(button);
		add(textArea);
	}
	public static void main(String[] args) {
		new Demo1().setVisible(true);
	}
	class myActionListener implements ActionListener{

		@Override
		public void actionPerformed(ActionEvent e) {
			// TODO Auto-generated method stub
			textArea.setText("");
			stack = new Stack<>();
			String string3,string4;
			int result;
			String string = textField.getText();
			String []strings = string.split(" {1,}");
			for(String string2 : strings) {
				if(string2.equals("+")) {
					string3 = stack.pop();
					string4 = stack.pop();
					result = Integer.parseInt(string4) + Integer.parseInt(string3);
					stack.push(result + "");
					textArea.append(string4 + "+" + string3 + "=" + result + "\n");
				}else if(string2.equals("-")) {
					string3 = stack.pop();
					string4 = stack.pop();
					result = Integer.parseInt(string4) - Integer.parseInt(string3);
					stack.push(result + "");
					textArea.append(string4 + "-" + string3 + "=" + result + "\n");
					
				}else if(string2.equals("*")) {
					string3 = stack.pop();
					string4 = stack.pop();
					result = Integer.parseInt(string4) * Integer.parseInt(string3);
					stack.push(result + "");
					textArea.append(string4 + "*" + string3 + "=" + result + "\n");
				}else if(string2.equals("/")) {
					string3 = stack.pop();
					string4 = stack.pop();
					result = Integer.parseInt(string4) / Integer.parseInt(string3);
					stack.push(result + "");
					textArea.append(string4 + "/" + string3 + "=" + result + "\n");
				}else {
					stack.push(string2);
				}
			}
			//textField.setText("");
		}	
	}
}

运行结果:
在这里插入图片描述
该程序在实现后缀表达式的求值基础上,将对后缀表达式的每一步的运算显示到文本域中,供读者理解.谢谢大家

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟-程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值