版权声明:所有博客本人原创,转载注明出处即可 https://blog.csdn.net/qq_42813491/article/details/88228731
java 用面向对象方式处理四则运算(int,double)
目录结构
抽象父类Operation
package operation;
public abstract class Operation {
//方法重载
public abstract int Calculation(int m,int n);//两个int型操作数运算
public abstract double Calculation(double m,double n);//两个double型操作数运算
}
加法运算类Addition
package operation;
public class Addition extends Operation {
// 方法重载
// 两个int型的运算数进行加法运算
@Override
public int Calculation(int m, int n) {
return m + n;
}
// 两个double型的运算数进行加法运算
@Override
public double Calculation(double m, double n) {
return m + n;
}
}
减法运算类 Subtraction
package operation;
public class Subtraction extends Operation {
// 方法重载
// 两个int型的运算数进行减法运算
@Override
public int Calculation(int m, int n) {
return m - n;
}
// 两个double型的运算数进行减法运算
@Override
public double Calculation(double m, double n) {
return m - n;
}
}
乘法运算类Multiplication
package operation;
public class Multiplication extends Operation {
// 方法重载
// 两个int型的运算数进行乘法运算
@Override
public int Calculation(int m, int n) {
return m * n;
}
// 两个double型的运算数进行乘法运算
@Override
public double Calculation(double m, double n) {
return m * n;
}
}
除法运算类Division
package operation;
public class Division extends Operation {
// 方法重载
// 两个int型的运算数进行除法运算
@Override
public int Calculation(int m, int n) {
return m / n;
}
// 两个double型的运算数进行除法运算
@Override
public double Calculation(double m, double n) {
return m / n;
}
}
Test测试类
package operation;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
while (true) {
service();// 执行所有的业务逻辑
}
}
// 所有的业务逻辑
public static void service() {
System.out.println("请输入数据类型,int或double");
String type = new Scanner(System.in).nextLine();// 接受用户输入的数据类型并对应做不同处理
switch (type) {
case "int":
doInt();// 两个int操作数的四则运算
break;
case "double":
doDouble();// 两个double操作数的四则运算
break;
default:
System.out.println("不要皮,请输入int或double");
break;
}
}
// int型输入
public static int inputInt(Scanner scan) {
if (!scan.hasNextInt()) {
System.out.println("数据类型不合法");
return -1;
}
return scan.nextInt();
}
// int型运算
public static void doInt() {
System.out.println("请输入一个int型的数");
int m = inputInt(new Scanner(System.in));// 输入数字
// 判定数据类型是否合法
if (m == -1) {
return;
}
System.out.println("请再输入一个int型的数");
int n = inputInt(new Scanner(System.in));
// 判定数据类型是否合法
if (n == -1) {
return;
}
System.out.println("请输入运算符:");
String op = new Scanner(System.in).nextLine(); // 接收用户输入的运算符
switch (op) {
case "+":
System.out.println("运算结果->" + new Addition().Calculation(m, n));// 匹配加法
break;
case "-":
System.out.println("运算结果->" + new Subtraction().Calculation(m, n));// 匹配减法
break;
case "*":
System.out.println("运算结果->" + new Multiplication().Calculation(m, n));// 匹配乘法
break;
case "/":
if (n == 0) {
System.out.println("除数不可以为0,请重新输入");
break;
}
System.out.println("运算结果->" + new Division().Calculation(m, n));// 匹配除法
break;
default:
System.out.println("运算法不合法");
break;
}
System.gc();// 垃圾回收
}
// double型输入
public static double inputDouble(Scanner scan) {
if (!scan.hasNextDouble()) {
System.out.println("数据类型不合法");
return -1.0;
}
return Double.parseDouble(scan.nextLine());
}
// double型运算
public static void doDouble() {
System.out.println("请输入一个double型的数");
double m = inputDouble(new Scanner(System.in));// 输入数字
// 判定数据类型是否合法
if (m == -1.0) {
return;
}
System.out.println("请再输入一个double型的数");
double n = inputDouble(new Scanner(System.in));
// 判定数据类型是否合法
if (n == -1.0) {
return;
}
System.out.println("请输入运算符:");
String op = new Scanner(System.in).nextLine(); // 接收用户输入的运算符
switch (op) {
case "+":
System.out.println("运算结果->" + new Addition().Calculation(m, n));// 匹配加法
break;
case "-":
System.out.println("运算结果->" + new Subtraction().Calculation(m, n));// 匹配减法
break;
case "*":
System.out.println("运算结果->" + new Multiplication().Calculation(m, n));// 匹配乘法
break;
case "/":
if (n == 0.0) {
System.out.println("除数不可以为0,请重新输入");
break;
}
System.out.println("运算结果->" + new Division().Calculation(m, n));// 匹配除法
break;
default:
System.out.println("运算法不合法");
break;
}
System.gc();// 垃圾回收
}
}
测试效果图
类型检测
数据合法性检测
double取值允许输入int范围的数字
运算结果(四种运算一样的,不再演示)
除数非法检测