Java实验12 整数算术表达式分析程序

该博客介绍了一个用Java编写的程序,该程序能够接收用户输入的四则运算字符串,如32+5*2-40/3,并按照运算符的优先级和结合性进行计算。程序通过Expression类和CalculateUtil工具类实现了表达式的拆分、乘除运算和加减运算,最终输出计算结果。示例中,输入32+5*2-40/3,程序输出结果为29。代码结构清晰,遵循面向对象的设计原则。

题目类别: 实验



关键字: 类、对象、封装、类之间的关系、字符串



内容要求:

1 . 编写一个Java应用程序。

2 . 要求实现功能如下:

  (1) 从键盘输入一个表示整数四则运算的字符串,例如:32+5*2-40/3

    四则运算符号:

    +代表整数加法、-代表整数减法、*代表整数乘法、/代表整数除法(结果为整数)

    运算数全部为正整数

    表达式中没有括号

  (2) 程序按照四则运算符的优先级和结合性对表达式进行分析并产生输出结果。

3 . 运行示例:

输入:32+5*2-40/3

输出:29

4 . 程序设计要求使用面向对象方法编写。



备注

打包为可以执行的JAR文档,其中要包含源程序文件。



实现代码:

Expression类

package cn.scau.module;

import cn.scau.utils.CalculateUtil;

import java.util.ArrayList;

/**
 * @author zg
 */
public class Expression {
   
   
    /**
     * 表达式
     */
    private String expression;

    public Expression() {
   
   
        this("");
    }

    public Expression(String expression) {
   
   
        this.expression = expression;
    }

    public String getExpression() {
   
   
        return expression;
    }

    public void setExpression(String expression) {
   
   
        this.expression = expression;
    }


    /**
     *
     * @return 表达式的结果
     */
    public int calculate() {
   
   
        ArrayList<String> entries = CalculateUtil.divideIntoEntries(this.expression);
        ArrayList<String> addEntries = CalculateUtil.calculateMultiAndDiv(entries);
        return CalculateUtil.calculatePlusAndMinusOnly(addEntries);
    }

}



CalculateUtil类

package cn.scau.utils;

import java.util.ArrayList;

/**
 *
 * 计算工具类
 *
 * @author zg
 */
public class CalculateUtil {
   
   

    /**
     *
     * @param expression 表达式
     * @return 拆分项和符号,将其存入数组中
     */
    public static ArrayList<String> divideIntoEntries(String expression) {
   
   
        char[] str = expression.toCharArray();
        ArrayList<String> lists = new ArrayList<>();
        StringBuilder list = new StringBuilder();

        //
        for (char c : str) {
   
   
            if (
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值