java 加减乘除_加减乘除运算(Java)

展开全部

//MathX.java

//表达式计算程序,绝对62616964757a686964616fe4b893e5b19e31333238643066原创,

//与网上多数介绍的方法思路有点不同,

//与采用直接调用js的方法有根本的不同,

//支持 加 减 乘 除 幂 及 开方 运算,支持多级括号,

//本程序在 JDK1.6_11下开发,低版本JDK兼容性未测试,

import java.text.DecimalFormat;

public class MathX {

public static void main(String[] args) {

String str = "83-32+83*32/4+3";

double d = Calc.doCalc(str).getValue();

System.out.println(Calc.getStr()+"="+d);

}

// public static double calc(String s){

//  return Calc.doCalc(s).getValue();

// }

// public static String getStr(){

//  return Calc.getStr();

// }

// public static String getFormatted() {

//  return Calc.getFormatted();

// }

}

class Calc{

private static final DecimalFormat df = new DecimalFormat("0.000000");

private static CalcCore co;

private static NumberWrapper result;

public static NumberWrapper doCalc(String exp){

co = new CalcCore(exp);

result = co.getResult();

return result;

}

public static String getFormatted() {

return df.format(result.getValue());

}

public static String getStr(){return co.toString();}

}

//数据外覆类

class NumberWrapper{

public static final int IaN = 0;

public static final int NaN = 1;

public static final NumberWrapper NOTHING = new NumberWrapper(Double.NaN,NumberWrapper.NaN);

private double value;

private int id;

public NumberWrapper(double v){

this(v,NumberWrapper.IaN);

}

public double getValue(){

return id==NumberWrapper.IaN?value:Double.NaN;

}

public NumberWrapper(double v,int id){

this.value=v;

this.id=id;

}

// +-*/^~

public NumberWrapper calc(NumberWrapper x,char o){

if(this.NaN()||x.NaN())

return NumberWrapper.NOTHING;

return new NumberWrapper(calc(this.getValue(),x.getValue(),o));

}

private double calc(double a,double b,char o){

try{

switch(o){

case OStack.PLUS:return a+b;

case OStack.SUBTRACT:return a-b;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值