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

针对不同的需求,通过四则运算规律实现以下两种计算器:
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());
	}
}

效果如下:

java简易计算器实训 java简易计算器程序分析_操作数

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

这类方法的核心在于返回值类型的转变
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());
	}

}

效果如下:

java简易计算器实训 java简易计算器程序分析_操作数_02

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

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

方法如下:

/**
*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;
		}
	}
}

效果如下:

java简易计算器实训 java简易计算器程序分析_运算符_03


java简易计算器实训 java简易计算器程序分析_System_04


java简易计算器实训 java简易计算器程序分析_操作数_05


java简易计算器实训 java简易计算器程序分析_操作数_06