1.定义一个复数类Complex(数据成员:a,b表示复数a+bi).并配以合适的方法完成复数对象的生成、复数的运算(加、减、乘除),然后做一个主类测试她。
package assignment;
public class Complex {
private double a,b;
public double getA() {
return a;
}
public void setA(double a) {
this.a = a;
}
public double getB() {
return b;
}
public void setB(double b) {
this.b = b;
}
public static Complex createComplex(double a,double b) { //生成复数
Complex complex=new Complex();
complex.setA(a);
complex.setB(b);
return complex;
}
public Complex add(Complex c) {//加法
Complex complex=new Complex();
complex.setA(this.getA()+c.getA());
complex.setB(this.getB()+c.getB());
return complex;
}
public Complex sub(Complex c) { //减法
Complex complex=new Complex();
complex.setA(this.getA()-c.getA());
complex.setB(this.getB()-c.getB());
return complex;
}
public Complex mul(Complex c) { //乘法
Complex complex=new Complex();
complex.setA(this.getA()*c.getA()-this.getB()*c.getB());
complex.setB(this.getB()*c.getA()+this.getA()*c.getB());
return complex;
}
public Complex div(Complex c) { //除法
Complex complex=new Complex();
complex.setA((this.getA()*c.getA()+this.getB()*c.getB())/(c.getA()*c.getA() + c.getB()*c.getB()));
complex.setB((this.getB()*c.getA()-this.getA()*c.getB())/(c.getA()*c.getA() + c.getB()*c.getB()));
return complex;
}
public void print() { //打印复数
if(this.getB() > 0){
System.out.println(this.getA() + "+" + this.getB() + "i");
}else if(this.getB() < 0){
System.out.println(this.getA() + "" + this.getB() + "i");
}else{
System.out.println(this.getA());
}
}
}
package assignment;
import java.util.Scanner;
public class testComplex {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
double a1,b1,a2,b2;
a1=in.nextDouble();b1=in.nextDouble();
a2=in.nextDouble();b2=in.nextDouble();
Complex complex1=Complex.createComplex(a1, b1);
Complex complex2=Complex.createComplex(a2, b2);
Complex resule_add=complex1.add(complex2);//加
Complex resule_sub=complex1.sub(complex2);//减
Complex resule_mul=complex1.mul(complex2);//乘
Complex resule_div=complex1.div(complex2);//除
resule_add.print();
resule_sub.print();
resule_mul.print();
resule_div.print();
in.close();
}
}
2.
定义一个二次方程式ax2+bx+c=0的类:QuadraticEquation,该类的数据成员:a,b,c.
方法成员:
1、合适的构造方法
2、getRoot1(),getRoot2(),用于返回二次方程的2个根,该方法的返回类型是复数类Complex(该类需要你自己定义),二次方程的根的求法需自己查询资料
3、getDiscriminant(),用于返回二次方程的判别式:b2-4ac
定义一个主类测试以上定义,要求显示给定二次方程的根
package assignment;
public class QuadraticEquation {
private double a,b,c;
public QuadraticEquation(double a,double b,double c) {
this.a=a;
this.b=b;
this.c=c;// TODO Auto-generated constructor stub
}
public Complex getRoot1() { //得到根1
Complex complex=new Complex();
if(getDiscriminant()>=0) {
double x1=(-b+Math.sqrt(getDiscriminant()))/(2*a);
complex.setA(x1);
complex.setB(0);
}else {
double shibu=-b/(2*a);
double xubu=Math.sqrt(-getDiscriminant())/(2*a);
complex.setA(shibu);
complex.setB(xubu);
}
return complex;
}
public Complex getRoot2() { //得到根2
Complex complex=new Complex();
if(getDiscriminant()>=0) {
double x1=(-b-Math.sqrt(getDiscriminant()))/(2*a);
complex.setA(x1);
complex.setB(0);
}else {
double shibu=-b/(2*a);
double xubu=-Math.sqrt(-getDiscriminant())/(2*a);
complex.setA(shibu);
complex.setB(xubu);
}
return complex;
}
private double getDiscriminant() { //判别式
return b*b-4*a*c;
}
}
package assignment;
import java.util.Scanner;
public class testQuadraticEquation {
public static void main(String[] args) {
// TODO Auto-generated method stub
double a,b,c;
Scanner input=new Scanner(System.in);
a=input.nextDouble();
b=input.nextDouble();
c=input.nextDouble();
QuadraticEquation q=new QuadraticEquation(a, b, c);
Complex complex1=q.getRoot1();
Complex complex2=q.getRoot2();
complex1.print();
complex2.print();
input.close();
}
}