急求java编“加减乘除”功能的程序
发布时间:2025-05-22 06:30:29 发布人:远客网络
一、急求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。