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

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

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

效果如下:

乘法
除法
减法
加法

  • 6
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的用Java代码实现的计算器界面: ``` import javax.swing.*; import java.awt.*; public class CalculatorUI { private JFrame frame; private JPanel panel; private JTextField display; private JButton button1, button2, button3, button4, button5, button6, button7, button8, button9, button0, addButton, subtractButton, multiplyButton, divideButton, equalsButton; private String firstNumber = ""; private String secondNumber = ""; private String operator = ""; public CalculatorUI() { frame = new JFrame("Simple Calculator"); frame.setBounds(100, 100, 300, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); display = new JTextField(); display.setEditable(false); display.setHorizontalAlignment(SwingConstants.RIGHT); button1 = new JButton("1"); button1.addActionListener(e -> digitButtonPressed("1")); button2 = new JButton("2"); button2.addActionListener(e -> digitButtonPressed("2")); button3 = new JButton("3"); button3.addActionListener(e -> digitButtonPressed("3")); button4 = new JButton("4"); button4.addActionListener(e -> digitButtonPressed("4")); button5 = new JButton("5"); button5.addActionListener(e -> digitButtonPressed("5")); button6 = new JButton("6"); button6.addActionListener(e -> digitButtonPressed("6")); button7 = new JButton("7"); button7.addActionListener(e -> digitButtonPressed("7")); button8 = new JButton("8"); button8.addActionListener(e -> digitButtonPressed("8")); button9 = new JButton("9"); button9.addActionListener(e -> digitButtonPressed("9")); button0 = new JButton("0"); button0.addActionListener(e -> digitButtonPressed("0")); addButton = new JButton("+"); addButton.addActionListener(e -> operatorButtonPressed("+")); subtractButton = new JButton("-"); subtractButton.addActionListener(e -> operatorButtonPressed("-")); multiplyButton = new JButton("*"); multiplyButton.addActionListener(e -> operatorButtonPressed("*")); divideButton = new JButton("/"); divideButton.addActionListener(e -> operatorButtonPressed("/")); equalsButton = new JButton("="); equalsButton.addActionListener(e -> equalsButtonPressed()); panel.add(button1); panel.add(button2); panel.add(button3); panel.add(addButton); panel.add(button4); panel.add(button5); panel.add(button6); panel.add(subtractButton); panel.add(button7); panel.add(button8); panel.add(button9); panel.add(multiplyButton); panel.add(button0); panel.add(equalsButton); panel.add(divideButton); frame.add(display, BorderLayout.NORTH); frame.add(panel, BorderLayout.CENTER); frame.setVisible(true); } private void digitButtonPressed(String digit) { display.setText(display.getText() + digit); if (operator.isEmpty()) { firstNumber = display.getText(); } else { secondNumber = display.getText(); } } private void operatorButtonPressed(String operator) { if (!firstNumber.isEmpty() && secondNumber.isEmpty()) { this.operator = operator; display.setText(""); } } private void equalsButtonPressed() { if (!firstNumber.isEmpty() && !secondNumber.isEmpty() && !operator.isEmpty()) { Double result; switch (operator) { case "+": result = Double.valueOf(firstNumber) + Double.valueOf(secondNumber); break; case "-": result = Double.valueOf(firstNumber) - Double.valueOf(secondNumber); break; case "*": result = Double.valueOf(firstNumber) * Double.valueOf(secondNumber); break; case "/": result = Double.valueOf(firstNumber) / Double.valueOf(secondNumber); break; default: result = null; } display.setText(String.valueOf(result)); firstNumber = String.valueOf(result); secondNumber = ""; operator = ""; } } public static void main(String[] args) { new CalculatorUI(); } } ``` 这个计算器界面有基本的加减乘除四则运算,以及计算结果的显示。用户输入字后,可以通过点击运算符号进行运算,点击等号得出结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值