使用多态实现计算器的加减乘除,根据运算符不同实例化不同子类进行计算(运算符可键盘接收输入)
例如:加法有num1、num2属性,方法:计算求和 减法有num1、num2属性,方法:计算求差 乘法有num1、num2属性,方法:计算求乘 除法有num1、num2属性,方法:计算求除
先看效果图:
代码如下:
package com_03.jin;
import java.util.Scanner;
/**
* 使用多态实现计算器的加减乘除,根据运算符不同实例化不同子类进行计算(运算符可键盘接收输入)
* 例如:加法有num1、num2属性,方法:计算求和
* 减法有num1、num2属性,方法:计算求差
* 乘法有num1、num2属性,方法:计算求乘
* 除法有num1、num2属性,方法:计算求除
*/
public class Demo5 {
public static void main(String[] args) {
Calculate calculate = null;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入第一个数:");
int a = scanner.nextInt();
System.out.println("请输入操作符:");
String operator = scanner.next();
System.out.println("请输入第二个数:");
int b = scanner.nextInt();
System.out.println("需要计算结果请输入(等号):=");
String equal = scanner.next();
switch (operator) {
case "+":
calculate = new Add(a, b);
break;
case "-":
calculate = new Subtraction(a, b);
break;
case "*":
calculate = new Take(a, b);
break;
case "/":
calculate = new Remove(a, b);
break;
}
if (equal.equals("=")) {
double res = calculate.operation();
System.out.println(res);
} else {
System.out.println("请正确按提示进行操作哦!");
}
}
}
abstract class Calculate {
public int num1;
public int num2;
public Calculate(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
/**
* 操作两个数
* 可以声明一个抽象方法
*
* @return
*/
public abstract double operation();
}
//加法
class Add extends Calculate {
public Add(int num1, int num2) {
super(num1, num2);
}
@Override
public double operation() {
return this.num1 + this.num2;
}
}
class Subtraction extends Calculate {
/**
* 有参构造方法
*/
public Subtraction(int num1, int num2) {
super(num1, num2);
}
@Override
public double operation() {
return this.num1 - this.num2;
}
}
class Take extends Calculate {
/**
* 有参构造方法
*
* @param num1
* @param num2
*/
public Take(int num1, int num2) {
super(num1, num2);
}
@Override
public double operation() {
return this.num1 * this.num2;
}
}
class Remove extends Calculate {
/**
* 有参构造方法
*
* @param num1
* @param num2
*/
public Remove(int num1, int num2) {
super(num1, num2);
}
@Override
public double operation() {
return this.num1 / this.num2;
}
}