要求
1. 如下是已有的一个复数类,x,y分别代表实部和虚部。该类只支持加法(add)和乘法(multiply)计算,要求创建一个MyComplexNumber类,扩充该类的功能如下:
增加求虚数的模(magnitude)的功能
复数的减法(minus)计算
原来的toString方法得到的复数表示是{3.5,12.81}的形式,要求在新的类里面修改为3.5+12.81i的形式。
2. 使用MyComplexNumber(注意,不是ComplexNumber)类完成几个复数的不同计算,并在屏幕输出结果。class ComplexNumber {
public double x, y;
public ComplexNumber(double real, double imaginary) {
this.x = real;
this.y = imaginary;
}
public String toString() { return "{" + x + "," + y + "}"; }
public void add(ComplexNumber a) {
this.x=this.x+a.x;
this.y=this.y+a.y;
}
public void multiply(ComplexNumber a) {
x=x*a.x - y*a.y;
y=x*a.y + y*a.x;
}
}
1. 设计提示
MyComplexNumber继承ComplexNumber类,并追加两个方法minus和magnitude方法即可。另外,需要覆盖toString方法,生成a+bi的复数表示字符串。
2. 编写程序代码
public double magnitude();//求模定义
public MyComplexNumber minus(MyComplexNumber a) ;//减法定义
我尝试了下
public class ComplexNumber {
public double x, y; public ComplexNumber(double real, double imaginary) {
this.x = real;
this.y = imaginary;
} public String toString() {
return "{" + x + "," + y + "}";
} public void add(ComplexNumber a) {
this.x = this.x + a.x;
this.y = this.y + a.y;
} public void multiply(ComplexNumber a) {
double m;
m = x;
x = x * a.x - y * a.y;
y = m * a.y + y * a.x;
}
}public class MyComplexNumber extends ComplexNumber {
public MyComplexNumber (double real, double imaginary) {
super(real,imaginary);
}
public void minus(ComplexNumber a) {
this.x=this.x-a.x;
this.y=this.y-a.y;
}
public void magnitude(ComplexNumber a) {
double m = Math.sqrt(a.x*a.x+a.y*a.y);
System.out.println("magnitude is:"+ m);
}
public String toString() { return x + "+" + y + "i"; }}
public class calaculate {
public static void main(String[] args) {
double x1=1.0;
double y1=2.0;
double x2=3;
double y2=2;
MyComplexNumber num1=new MyComplexNumber(x1,y1);
MyComplexNumber num2=new MyComplexNumber(x2,y2);
num1.toString();
}}最后一个没写完,但是tostring没有输出,一直搞不明白,请哪位帮忙解释一下,先谢了
1. 如下是已有的一个复数类,x,y分别代表实部和虚部。该类只支持加法(add)和乘法(multiply)计算,要求创建一个MyComplexNumber类,扩充该类的功能如下:
增加求虚数的模(magnitude)的功能
复数的减法(minus)计算
原来的toString方法得到的复数表示是{3.5,12.81}的形式,要求在新的类里面修改为3.5+12.81i的形式。
2. 使用MyComplexNumber(注意,不是ComplexNumber)类完成几个复数的不同计算,并在屏幕输出结果。class ComplexNumber {
public double x, y;
public ComplexNumber(double real, double imaginary) {
this.x = real;
this.y = imaginary;
}
public String toString() { return "{" + x + "," + y + "}"; }
public void add(ComplexNumber a) {
this.x=this.x+a.x;
this.y=this.y+a.y;
}
public void multiply(ComplexNumber a) {
x=x*a.x - y*a.y;
y=x*a.y + y*a.x;
}
}
1. 设计提示
MyComplexNumber继承ComplexNumber类,并追加两个方法minus和magnitude方法即可。另外,需要覆盖toString方法,生成a+bi的复数表示字符串。
2. 编写程序代码
public double magnitude();//求模定义
public MyComplexNumber minus(MyComplexNumber a) ;//减法定义
我尝试了下
public class ComplexNumber {
public double x, y; public ComplexNumber(double real, double imaginary) {
this.x = real;
this.y = imaginary;
} public String toString() {
return "{" + x + "," + y + "}";
} public void add(ComplexNumber a) {
this.x = this.x + a.x;
this.y = this.y + a.y;
} public void multiply(ComplexNumber a) {
double m;
m = x;
x = x * a.x - y * a.y;
y = m * a.y + y * a.x;
}
}public class MyComplexNumber extends ComplexNumber {
public MyComplexNumber (double real, double imaginary) {
super(real,imaginary);
}
public void minus(ComplexNumber a) {
this.x=this.x-a.x;
this.y=this.y-a.y;
}
public void magnitude(ComplexNumber a) {
double m = Math.sqrt(a.x*a.x+a.y*a.y);
System.out.println("magnitude is:"+ m);
}
public String toString() { return x + "+" + y + "i"; }}
public class calaculate {
public static void main(String[] args) {
double x1=1.0;
double y1=2.0;
double x2=3;
double y2=2;
MyComplexNumber num1=new MyComplexNumber(x1,y1);
MyComplexNumber num2=new MyComplexNumber(x2,y2);
num1.toString();
}}最后一个没写完,但是tostring没有输出,一直搞不明白,请哪位帮忙解释一下,先谢了
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货