结构推理 根据下面的要求编程实现复数类ComplexNumber。 (1)复数类ComplexNumber的属性 ·m_dRealPart 实部,代表复数的实数部分。 ·m_dlmaginPart 虚部,代表复数的虚数部分。 (2)复数类ComplexNumber的方法 ·ComplexNumber() 构造函数,将实部、虚部都置为0。 ·ComplexNumber(doubler,doublei) 构造函数,创建复数对象的同时完成复数的实部、虚部的初始化;r为实部的初值,i为虚部的初值。 ·getRealPart() 获得复数对象的实部。 ·getlmaginaryPart() 获得复数对象的虚部。 ·setRealPart(doubled) 把当前复数对象的实部设置为给定的形参的数字。 ·setlmaginaryPart(doubled) 把当前复数对象的虚部设置为给定形参的数字。 ·complexAdd(ComplexNumberc) 当前复数对象与形参复数对象相加,所得的结果也是复数值,返回给此方法的调用者。 ·complexAdd(doublec) 当前复数对象与形参实数对象相加,所得的结果仍是复数值,返回给此方法的调用者。 ·complexMinus(ComplexNumberc) 当前复数对象与形参复数对象相减,所得的结果也是复数值,返回给此方法的调用者。
【正确答案】public class ch5_e5_12 { public static void main(String args[]) { ComplexNumber cNumber_1 = new ComplexNumber(3,-5); ComplexNumber cNumber_2 = new ComplexNumber(2,2); double d = 10.0; System.out.println(cNumber_1.toString() + " 加 " + cNumber_2.toString() + " 等于 " + cNumber_1.complexAdd(cNumber_2).toString()); System.out.println(cNumber_1.toString() + " 加 " + d + " 等于 " + cNumber_1.complexAdd(d).toString()); System.out.println(cNumber_1.toString() + " 减 " + cNumber_2.toString() + " 等于 " + cNumber_1.complexMinus(cNumber_2).toString()); System.out.println(cNumber_1.toString() + " 减 " + d + " 等于 " + cNumber_1.complexMinus(d).toString()); System.out.println(cNumber_1.toString() + " 乘 " + cNumber_2.toString() + " 等于 " + cNumber_1.complexMulti(cNumber_2).toString()); System.out.println(cNumber_1.toString() + " 乘 " + d + " 等于 " + cNumber_1.complexMulti(d).toString()); } } class ComplexNumber { //域 private double m_dRealPart; private double m_dImaginPart; //构造函数 ComplexNumber() { m_dRealPart = 0.0; m_dImaginPart = 0.0; } ComplexNumber(double r,double i) { m_dRealPart = r; m_dImaginPart = i; } ComplexNumber(ComplexNumber c) { m_dRealPart = c.getRealPart(); m_dImaginPart = c.getImaginaryPart(); } //get,set方法 double getRealPart() { return m_dRealPart; } double getImaginaryPart() { return m_dImaginPart; } void setRealPart(double d) { m_dRealPart = d; } void setImaginaryPart(double d) { m_dImaginPart = d; } //复数运算方法 ComplexNumber complexAdd(ComplexNumber c) { return new ComplexNumber( this.m_dRealPart + c.getRealPart(), this.m_dImaginPart + c.getImaginaryPart()); } ComplexNumber complexAdd(double c) { return new ComplexNumber( this.m_dRealPart + c, this.m_dImaginPart); } ComplexNumber complexMinus(ComplexNumber c) { return new ComplexNumber( this.m_dRealPart - c.getRealPart(), this.m_dImaginPart - c.getImaginaryPart()); } ComplexNumber complexMinus(double c) { return new ComplexNumber( this.m_dRealPart - c, this.m_dImaginPart); } ComplexNumber complexMulti(ComplexNumber c) { return new ComplexNumber( this.m_dRealPart * c.getRealPart() - this.m_dImaginPart * c.getImaginaryPart(), this.m_dRealPart * c.getImaginaryPart() + this.m_dImaginPart * c.getRealPart()); } ComplexNumber complexMulti(double c) { return new ComplexNumber( this.m_dRealPart * c, this.m_dImaginPart * c); } //toString() public String toString() { return "(" + m_dRealPart + " + " + m_dImaginPart + " i" + ")"; } }
【答案解析】