您当前的位置:首页 > 互联网教程

急求java编“加减乘除”功能的程序

发布时间:2025-05-22 06:30:29    发布人:远客网络

急求java编“加减乘除”功能的程序

一、急求java编“加减乘除”功能的程序

private double precision= 0.0001;//精准度

public static void main(String args []){

Calculator clerk=new Calculator();

System.out.println("请按格式输入符号空格数字");

System.out.println("例如:+ 3");

System.out.println("如果想结束输入e");

System.out.println("清零请按c");

clerk.handleArithmeticException(e);//抓住后调用方法

catch(UnknownOpException e){//catch自定义异常

clerk.handleUnknownOpException(e);

System.out.println("最终的结果是"+clerk.getValue());

System.out.println("计算器计算结束");

public void setResult(double newResult){//setResult没用到

public void doCalculation() throws ArithmeticException,UnknownOpException

Scanner keyboard= new Scanner(System.in);

System.out.println("结果="+result);

nextOp=(keyboard.next()).charAt(0);//按位置返回字符

if((nextOp=='e')||(nextOp=='E'))

else if((nextOp=='c')||(nextOp=='c')){//按位置返回字符

System.out.println("结果已清0");

nextNumber=keyboard.nextDouble();

result=evaluate(nextOp,result,nextNumber);

System.out.println("结果"+ nextOp+""+nextNumber+"="+result);

System.out.println("最终的结果="+ result);

public double evaluate(char op,double n1,double n2) throws ArithmeticException,UnknownOpException

if((-precision<n2)&&(n2<precision))

throw new ArithmeticException(); answer=n1/n2;

throw new UnknownOpException("符号错误!!!");

public void handleArithmeticException(ArithmeticException e){//catch的调用方法

System.out.println("出错了!!!被除数是0");

System.out.println("程序结束");

public void handleUnknownOpException(UnknownOpException e){

//System.out.println(e.getMessage());

System.out.println("清从新输入:");

System.out.println("请按格式输入符号空格数字");

System.out.println("例如:+ 3");

System.out.println("如果想结束输入e");

// System.out.println(e2.getMessage());

System.out.println("符号未知");

System.out.println("程序结束");

catch(ArithmeticException e3){

handleArithmeticException(e3);

class UnknownOpException extends Exception{//自定义无符号异常

public UnknownOpException(String o){

System.out.println(o+"没有这个符号");

你看看行不?程序设计的不是很好,但能实现+-*/

另一个小+-*/的程序,你自己再改改

public static void main(String[] args){//在编译时自带参数。类型强制转换

if(args.length<3){//命令行参数个数小于3

"Usage: java Test\"n1\"\"op\"\"n2\"");

System.exit(-1);//系统退出,-1表示非正常退出。0表示正常退出。

double d1= Double.parseDouble(args[0]);

double d2= Double.parseDouble(args[2]);

if(args[1].equals("+")) d= d1+d2;

else if(args[1].equals("-")) d= d1-d2;

else if(args[1].equals("x")) d= d1*d2;//*在这个程序里的cmd运行下有错误,所以用x

else if(args[1].equals("/")) d= d1/d2;

System.out.println("Error operator!");

二、Java中数字的加减乘除 BigDecimal

在Java中处理精度问题时,BigDecimal显得尤为关键。通过使用BigDecimal,开发者能够实现精确的加减乘除运算,避免了浮点数运算中常见的精度损失。

初始化BigDecimal实例时,可以使用多种构造函数。例如,通过整数初始化:BigDecimal bigDecimal= new BigDecimal(1);,通过小数初始化:BigDecimal bigDecimal= new BigDecimal(1.222);。

进行运算时,BigDecimal提供了丰富的方法。加法使用add()函数,减法使用subtract()函数,乘法使用multiply()函数,除法使用divide()函数。例如,将两个BigDecimal实例相加:bigDecimal= bigDecimal.add(bigDecimal);。

对于更复杂的运算,如将一个数与自身相加后再四舍五入保留两位小数,可以使用setScale()方法。如以下代码所示:

bigDecimal= bigDecimal.add(bigDecimal).setScale(2,BigDecimal.ROUND_UP);。这里,setScale(2,BigDecimal.ROUND_UP)用于格式化小数点,确保结果保留两位,并对末位进行进位处理。

通过这些方法,开发者能够实现精确的数值计算,适用于金融、科学计算等对精度有高要求的场景。

三、java int double 加减法 基本类型运算问题

1.-2.8421709430404007E-14表示-2.8421709430404007乘以10的-14次方,计算机能准确表示十进制的整数,但不能准确表示十进制小数。System.out.println(150.0+0+183.28-0-183.28-150.0);150.0+0+183.28-0-183.28-150.0的结果为0.00000000000...,只不过你的输出结果为double型,精度比较高,没有超出打印函数(println之类的)的默认精度而已。

2.System.out.println(((150.00)+0.00+(183.28))-(0.00+(183.28)+(150.00)));中将((150.00)+0.00+(183.28))作为个运算单元,二个括号内的运算的结果肯定一样,与精度无关。结果当然为0。

3.用System.out.println((long)(150.0+0+183.28-0-183.28-150.0));(150.0+0+183.28-0-183.28-150.0)的结果为0.00000000...,转换成long,舍弃小数位,结果自然为0;

4.System.out.println(150.0F+0+183.28F-0-183.28F-150.0F);运算结果为float型,超出打印函数(println之类的)的默认精度,截取下来为0。