编程练习: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;
String string;
public Fushu(double shibu,double xubu){//含参构造方法,指定复数的实部和虚部
this.shibu=shibu;
this.xubu=xubu;
}
public Fushu(){
}
double getShibu() {
return shibu;
}
double getXubu() {
return xubu;
}
void shuChu() {
if(shibu==0&&xubu!=0)
System.out.print(xubu+"i");
else if(xubu==0)
System.out.print(shibu);
else if(xubu<0)
System.out.print(shibu+""+xubu+"i");
else
System.out.print(shibu+"+"+xubu+"i");
}
public String toStr() {
if(shibu==0&&xubu!=0)
string=String.valueOf(xubu)+"i";
else if(xubu==0)
string=String.valueOf(shibu);
else if(xubu<0)
string=String.valueOf(shibu)+String.valueOf(xubu)+"i";
else
string=String.valueOf(shibu)+"+"+String.valueOf(xubu)+"i";
return string;
}
public Fushu add(Fushu r) {//加法运算
double x=r.getShibu();
double y=r.getXubu();
double newShibu=shibu+x;
double newXubu=xubu+y;
Fushu result=new Fushu(newShibu,newXubu);
return result;
}
public Fushu sub(Fushu r) {//减法运算
double x=r.getShibu();
double y=r.getXubu();
double newShibu=shibu-x;
double newXubu=xubu-y;
Fushu result=new Fushu(newShibu,newXubu);
return result;
}
public Fushu muti(Fushu r) {//乘法运算
double x=r.getShibu();
double y=r.getXubu();
double newShibu=shibu*x-xubu*y;
double newXubu=xubu*x+shibu*y;
Fushu result=new Fushu(newShibu,newXubu);
return result;
}
public Fushu div(Fushu r) {//除法运算
double x=r.getShibu();
double y=r.getXubu();
double newShibu=(shibu*x+xubu*y)/(x*x+y*y);
double newXubu=(xubu*x-shibu*y)/(x*x+y*y);
Fushu result=new Fushu(newShibu,newXubu);
return result;
}
}
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());
System.out.print("复数: ");
r1.shuChu();
System.out.print(" 与复数: ");
r2.shuChu();
System.out.print("\n相加得: ");
Fushu Result=r1.add(r2);
Result.shuChu();
System.out.print("\n相减得: ");
Result=r1.sub(r2);
Result.shuChu();
System.out.print("\n相乘得: ");
Result=r1.muti(r2);
Result.shuChu();
System.out.print("\n相除得: ");
Result=r1.div(r2);
Result.shuChu();
}
}