java实现简易计算器(四则运算详细分析) 您所在的位置:网站首页 编程实现简易的计算器 java实现简易计算器(四则运算详细分析)

java实现简易计算器(四则运算详细分析)

2024-06-19 02:09| 来源: 网络整理| 查看: 265

简易计算器(四则运算规律)

针对不同的需求,通过四则运算规律实现以下两种计算器: 1.main()中自定义初始值,规定两个操作数和操作运算符(+、-、*、/) 2.自定义功能类(FourCalc.java)对于输入不同的操作运算符(+、-、x、/),在测试类(TestCalc.java)中输出结果 注意:在计算器的制作过程中,"+、-、*"三种运算符一般运算结果为整型数,而 "/"运算结果一般为小数,在以下范例中会将两种不同的操作结果给予显示

第一种:规定初始值类型计算器 (类型一)经过四种操作运算符,输出结果依然是浮点型 方法一:

在main()中创建FourCalc对象,分别定义"+、-、*、/"四种运算符的输出,规定初始值,输出结果

package practise; class FourCalc{ //第一个操作数 public double op1; //运算符 public char sign; //第二个操作数 public double op2; public double calc(){ //声明返回变量 double rtn=0; //根据运算符,计算 switch (this.sign) { case '+': rtn=this.op1+this.op2; break; case '-': rtn=this.op1-this.op2; break; case '*': rtn=this.op1*this.op2; break; case '/': rtn=this.op1/this.op2; break; default: System.out.println("运算符有误!"); break; } //返回 return rtn; } } public class TestExercise03 { public static void main(String[] args) { //创建计算器 FourCalc c1 = new FourCalc(); //+ 1+2 //设置op1 c1.op1=1; //设置运算符 c1.sign='+'; //设置op2 c1.op2=2; //计算并输出,char--->String:String.valueOf(c1.sign) System.out.println(c1.op1+"+"+c1.op2+"="+c1.calc()); //+ 3-1 //设置op1 c1.op1=3; //设置运算符 c1.sign='-'; //设置op2 c1.op2=1; //计算并输出 System.out.println(c1.op1+"-"+c1.op2+"="+c1.calc()); //+ 3*2 //设置op1 c1.op1=3; //设置运算符 c1.sign='*'; //设置op2 c1.op2=2; //计算并输出 System.out.println(c1.op1+"*"+c1.op2+"="+c1.calc()); //+ 4/3 //设置op1 c1.op1=4; //设置运算符 c1.sign='/'; //设置op2 c1.op2=3; //计算并输出 System.out.println(c1.op1+"/"+c1.op2+"="+c1.calc()); } } 方法二:

与方法一的不同之处在于对于char类型的变量,sign变量没有通过手动输入"+、-、*、/"四种运算符,而是通过调用String.valueOf(c1.sign) 原型:valueOf(char c) 返回 char 参数的字符串表示形式。 可以将char类型的sign通过方法调用变成String类型输出

package practise; class FourCalc{ //第一个操作数 public double op1; //运算符 public char sign; //第二个操作数 public double op2; public double calc(){ //声明返回变量 double rtn=0; //根据运算符,计算 switch (this.sign) { case '+': rtn=this.op1+this.op2; break; case '-': rtn=this.op1-this.op2; break; case '*': rtn=this.op1*this.op2; break; case '/': rtn=this.op1/this.op2; break; default: System.out.println("运算符有误!"); break; } //返回 return rtn; } } public class TestExercise03 { public static void main(String[] args) { //创建计算器 FourCalc c1 = new FourCalc(); //+ 1+2 //设置op1 c1.op1=1; //设置运算符 c1.sign='+'; //设置op2 c1.op2=2; //计算并输出,char--->String:String.valueOf(c1.sign) System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 3-1 //设置op1 c1.op1=3; //设置运算符 c1.sign='-'; //设置op2 c1.op2=1; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 3*2 //设置op1 c1.op1=3; //设置运算符 c1.sign='*'; //设置op2 c1.op2=2; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 4/3 //设置op1 c1.op1=4; //设置运算符 c1.sign='/'; //设置op2 c1.op2=3; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); } } 效果如下:

均为浮点输出,不保留整数

(类型二)"+、-、*、/“输出结果为整型数,”/"输出结果为浮点型

这类方法的核心在于返回值类型的转变 1.返回变量rtn的数据类型转变为int型时:(java.lang.Integer) rtn=Integer.parseInt(String.valueOf(this.op1)+String.valueOf(this.op2)); 原型:parseInt(String s) 将字符串参数作为有符号的十进制整数进行解析。 2.返回变量rtn的数据类型转变为double型时:(java.lang.Double) rtn=Double.parseDouble(String.valueOf(this.op1)+String.valueOf(this.op2)); 原型:parseDouble(String s) 返回一个新的 double 值,该值被初始化为用指定 String 表示的值,这与 Double 类的 valueOf 方法一样。 注意:如果这个方法的代码直接是拷贝于上面的方法二,则要将int、double的数据类型改成Object引用类型,来源于父类

package practise; class FourCalcTwo{ //第一个操作数 public Object op1; //运算符 public char sign; //第二个操作数 public Object op2; public Object calc(){ //声明返回变量 Object rtn=0; //根据运算符,计算 switch (this.sign) { case '+'://obj->String->int rtn=Integer.parseInt(String.valueOf(this.op1)+String.valueOf(this.op2)); break; case '-': rtn=Integer.parseInt(String.valueOf(this.op1)+String.valueOf(this.op2)); break; case '*': rtn=Integer.parseInt(String.valueOf(this.op1)+String.valueOf(this.op2)); break; case '/'://obj->String->Double rtn=Double.parseDouble(String.valueOf(this.op1)+String.valueOf(this.op2)); break; default: System.out.println("运算符有误!"); break; } //返回 return rtn; } } public class TestExercise03_v2 { public static void main(String[] args) { //创建计算器 FourCalcTwo c1 = new FourCalcTwo(); //+ 1+2 //设置op1 c1.op1=1; //设置运算符 c1.sign='+'; //设置op2 c1.op2=2; //计算并输出,char--->String:String.valueOf(c1.sign) System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 3-1 //设置op1 c1.op1=3; //设置运算符 c1.sign='-'; //设置op2 c1.op2=1; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 3*2 //设置op1 c1.op1=3; //设置运算符 c1.sign='*'; //设置op2 c1.op2=2; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); //+ 4/3 //设置op1 c1.op1=4; //设置运算符 c1.sign='/'; //设置op2 c1.op2=3; //计算并输出 System.out.println(c1.op1+String.valueOf(c1.sign)+c1.op2+"="+c1.calc()); } } 效果如下:

整数和浮点输出

第二种:从键盘输入初始值类型计算器

"+、-、*、/“输出结果为整型数,”/"输出结果为浮点型,并保留两位小数

方法如下: /** *FourCalc.java(功能类) */ package exercise; import java.text.DecimalFormat; import java.util.Scanner; /** * 面向对象的思想求,求四则运算() * @author Administrator * */ public class FourCalc { //第一个操作数 public int op1; //符号运算符 public char sgn = ' '; //第二个运算符 public int op2; /** * int 整型数(+、-、*)运算 * @return 运算结果 */ public String calc(){ //声明一个返回变量 int rtn = 0; //判断 switch (sgn) { case '+': rtn = op1+op2; System.out.println(op1+"+"+op2+"="+rtn); break; case '-': rtn = op1-op2; System.out.println(op1+"-"+op2+"="+rtn); break; case '*': rtn = op1*op2; System.out.println(op1+"*"+op2+"="+rtn); break; default: break; } return "当前的运算结果为:"+rtn; } public String dCalc(){ //声明一个返回变量 double rtn = 0; //创建DecimalFormat对象,并指定格式化串 DecimalFormat df = new DecimalFormat("#.##"); //判断是否是除法 if(sgn=='/'){ rtn = (double)op1/op2; System.out.println(op1+"/"+op2+"="+df.format(rtn)); } //返回 return "当前的运算结果为:"+df.format(rtn); } } /** *TestCalc.java(测试类) */ package exercise; import java.util.Scanner; public class TestCalc { public static void main(String[] args) { //创建一个FourCalc对象 FourCalc c = new FourCalc(); //输出 //判断输出是整型数值还是浮点型数值 //创建Scanner对象 Scanner scan = new Scanner(System.in); //提示 System.out.println("请输入第一个操作数:"); c.op1 = scan.nextInt(); System.out.println("请输入运算符号:"); c.sgn = scan.next().charAt(0); System.out.println("请输入第二个操作数:"); c.op2 = scan.nextInt(); switch(c.sgn){ case '+': case '-': case '*': System.out.println(c.calc()); break; case '/': System.out.println(c.dCalc()); break; default: break; } } } 效果如下:

乘法 除法 减法 加法



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有