java 用面向对象方式处理四则运算(int,double)

版权声明:所有博客本人原创,转载注明出处即可 https://blog.csdn.net/qq_42813491/article/details/88228731

目录结构

在这里插入图片描述

抽象父类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范围的数字
在这里插入图片描述

运算结果(四种运算一样的,不再演示)

在这里插入图片描述


在这里插入图片描述

除数非法检测

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_42813491/article/details/88228731