复数的类封装

编程练习:Ch4 复数的类封装

参考P111 4.18.1 有理数的类封装 完成 复数加减乘除四则运算的类封装,主类Main输入两个复数输出其四则运算后的结果。

如:输入 1 2 1 -2
输出 复数: 1.0+2.0i 与复数: 1.0-2.0i
相加得: 2.0
相减得: 4.0i
相乘得: 5.0
相除得: -0.6+0.8i


import java.util.Scanner;

class Fushu {// 复数类,成员变量shibu,xubu分别存放复数实部和虚部的值
	double shibu, xubu;

	public Fushu(double shibu, double xubu) {// 含参构造方法,指定复数的实部和虚部
		this.shibu = shibu;
		this.xubu = xubu;
	}

	// ---begin---
	// 定义复数类的加减乘除四则运算方法
	static String a(double a, double b, double c, double d) {
		if (a + b == 0) {
			if (c + d != 0) {
				return "";
			} else {
				return a + b + "";
			}

		} else {
			if (c + d == 0) {
				return a + b + "";
			} else {
				if (c + d < 0) {
					return a + b + "";
				} else {
					return a + b + "+";
				}## 标题
			}
		}
	}
	String b(double a, double b) {
		if (a + b != 0) {
			return a + b + "i";
		} else {
			return "";
		}

	}

	// 以上相加
	static String c(double a, double b, double c, double d) {
		if (a - b == 0) {
			if (c - d != 0) {
				return "";
			} else {
				return a - b + "";
			}
		} else {
			if (c - d == 0) {
				return a - b + "";
			} else {
				if (c - d < 0) {
					return a - b + "";
				} else {
					return a - b + "+";
				}
			}
			// return a-b+"+";
		}
	}
	String d(double a, double b) {
		if (a - b != 0) {
			return a - b + "i";
		} else {
			return "";
		}
	}
	// 以上相减
	static String e(double a, double b, double c, double d) {
		if ((a * c - b * d) == 0) {
			if ((b * c + a * d) != 0) {
				return "";
			} else {
				return (a * c - b * d) + "";
			}

		} else {
			if (((b * c + a * d)) == 0) {
				return (a * c - b * d) + "";
			} else {
				if (((b * c + a * d)) == 0) {
					return (a * c - b * d) + "";
				} else {
					return (a * c - b * d) + "+";
				}
			}
			// return a-b+"+";
		}
	}
	String f(double a, double b, double c, double d) {
		if (((b * c + a * d)) != 0) {
			return (b * c + a * d) + "i";
		} else {
			return "";
		}

	}

	// 以上相乘
	static String g(double a, double b, double c, double d) {
		if (((a * c + b * d) / (c * c + d * d)) == 0) {
			if (((b * c - a * d) / (c * c + d * d)) != 0) {
				return "";
			} else {
				return ((a * c + b * d) / (c * c + d * d)) + "";
			}

		} else {
			if (((b * c - a * d) / (c * c + d * d)) == 0) {
				return ((a * c + b * d) / (c * c + d * d)) + "";
			} else {
				if (((b * c - a * d) / (c * c + d * d)) == 0) {
					return ((a * c + b * d) / (c * c + d * d)) + "";
				} else {
					return ((a * c + b * d) / (c * c + d * d)) + "+";
				}

			}
			// return a-b+"+";
		}
	}

	String h(double a, double b, double c, double d) {
		if (((b * c - a * d) / (c * c + d * d)) != 0) {
			return ((b * c - a * d) / (c * c + d * d)) + "i";
		} else {
			return "";
		}

	}
	// 以上相除
	// ---end---
}

public class main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		Fushu r1 = new Fushu(sc.nextDouble(), sc.nextDouble());
		Fushu r2 = new Fushu(sc.nextDouble(), sc.nextDouble());
		// ---begin---
		// 输出复数r1,r2,并对复数r1,r2进行四则运算,输出运算结果

		System.out.print("复数: " + ((r1.shibu == 0) ? "" : (r1.xubu > 0) ? r1.shibu + "+" : r1.shibu)
				+ ((r1.xubu == 0) ? "" : r1.xubu + "i"));

		System.out.print(" 与复数: " + ((r2.shibu == 0) ? "" : (r2.xubu > 0) ? r2.shibu + "+" : r2.shibu)
				+ ((r2.xubu == 0) ? "" : r2.xubu + "i"));

		System.out.print("\n相加得: " + r1.a(r1.shibu, r2.shibu, r1.xubu, r2.xubu) + r1.b(r1.xubu, r2.xubu));

		System.out.print("\n相减得: " + r1.c(r1.shibu, r2.shibu, r1.xubu, r2.xubu) + r1.d(r1.xubu, r2.xubu));

		System.out.print(
				"\n相乘得: " + (r1.e(r1.shibu, r1.xubu, r2.shibu, r2.xubu) + r1.f(r1.shibu, r1.xubu, r2.shibu, r2.xubu)));

		System.out.print(
				"\n相除得: " + r1.g(r1.shibu, r1.xubu, r2.shibu, r2.xubu) + r1.h(r1.shibu, r1.xubu, r2.shibu, r2.xubu));

		// ---end---
	}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值