java如何实现加减乘除

 废话不多说,直接上代码!

//package 一般测试题;

import java.util.Scanner;
/*  *  *   
要求在控制台输入一个计算表达式加减乘除  * 
 例如: 1+2  *  则答案输出3    
关于subString方法的介绍:自己去看官方给的API或者源码  */

public class Work02 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入数学表达式;");
        String str = scan.next();
        String str1 = "[0-9]+";
        String str2 = "[\\+\\*/-]";
        String[] arr = str.split(str2);
        for (int i = 0; i < arr.length; i++)
            if (!arr[i].matches(str1)) {
                System.out.println("不符合数学表达式");
                return;
            }
        if (str.indexOf("+") > 0) Change(str.indexOf("+"), str, 1);
        if (str.indexOf("-") > 0) Change(str.indexOf("-"), str, 2);
        if (str.indexOf("/") > 0) Change(str.indexOf("/"), str, 3);
        if (str.indexOf("*") > 0) Change(str.indexOf("*"), str, 4);
    }

    public static void Change(int m, String str3, int n) {
        int a = Integer.parseInt(str3.substring(0, m));
        int b = Integer.parseInt(str3.substring(m + 1));
        int result = 0;
        switch (n) {
            case 1:
                result = a + b;
                System.out.println("加法的最后结果" + result);
                break;
            case 2:
                result = a - b;
                System.out.println("减法的最后的结果" + result);
                break;
            case 3:
                result = a / b;
                System.out.println("除法的最后结果" + result);
                break;
            case 4:
                result = a * b;
                System.out.println("乘法的最后结果" + result);
                break;
        }
    }
} 

 

唔,其实里面就是一个工具类,加减乘除、保留两位小数。一共5个方法。。。emmmm.....为啥分这么高呢。因为宝宝想分想疯了。 附代码,有土豪就打赏打赏,没土豪的直接拿去使吧。 package cn.cisdom.base.utils; import java.math.BigDecimal; import java.text.DecimalFormat; public class Calculation { public static final DecimalFormat df = new DecimalFormat("######0.00"); /** * @methodName format2point * @desc 保留两位小数点 * @param value * @return java.lang.String * @author xm * @create 2018/6/7 12:03 **/ public static String format2point(Number value) { return df.format(value); } public static Double add(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.add(b2).doubleValue(); } /** * 提供精确的减法运算。 * * @param value1 * 减数 * @param value2 * 被减数 * @return 两个参数的差 */ public static Double sub(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.subtract(b2).doubleValue(); } /** * 提供精确的乘法运算。 * * @param value1 * 被乘数 * @param value2 * 乘数 * @return 两个参数的积 */ public static Double mul(Number value1, Number value2) { BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.multiply(b2).doubleValue(); } /** * 提供精确的除法运算。 * * @param value1 * 除数 * @param value2 * 被除数 * @return 除数/被除数 */ public static Double div(Number value1, Number value2) { //MathContext mc = new MathContext(2, RoundingMode.HALF_DOWN);//精度为2,舍入模式为大于0.5进1,否则舍弃 BigDecimal b1 = new BigDecimal(Double.toString(value1.doubleValue())); BigDecimal b2 = new BigDecimal(Double.toString(value2.doubleValue())); return b1.divide(b2).doubleValue(); } public static void main(String[] args) { Double aDouble=Calculation.add(56.9, 1.67); System.out.println(aDouble); Double bDouble=Calculation.sub(99.2,aDouble); System.out.println(bDouble); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值