编程练习: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---
}
}