2013-03-09 117 views

回答

3

Java没有复数类型。

要存储/表示复数,你将不得不:

  • 创建自己的类型
  • 使用变量(即RE,林)
  • 或使用第三方库

另外,就“转换”双精度到复数而言,双精度值显然只能表示复数的虚数或实数部分。所以你必须更具体地说明你的意思。如果您想双重转换为等于0复数的实部等于你的双重部和虚部的那么应该是相当直截了当..

如果你想创建自己的类型它可能是这样的:

class ComplexNumber{ 
    public ComplexNumber(double re, double im) 
    { 
     _re = re; 
     _im = im; 
    } 

    private double _re; 
    public double getReal(){ 
     return _re; 
    } 
    private double _im; 
    public double getImaginary(){ 
     return _im; 
    } 

    @overrides 
    public boolean equals(object other){ 
     if(other == null) 
      return false; 
     ComplexNumber n = (ComplexNumber)other; 
     return _re.equals(n._re) && _im.equals(n._im); 
    } 

    @overrides 
    public boolean getHashCode(){ 
     return _re.getHashCode()^_im.getHashCode(); 
    } 

    @overrides 
    public void toString(){ 
     return "(" + re.toString() + "," + im.toString() + ")"; 
    } 
} 

注意这个类有不可变的语义(即你不能修改它的内部状态,一旦被实例化)。如果你打算表示一个复数,这是可取的。然后,您可以使用静态方法来添加/减去/乘/除这些复数。

+0

哇!非常感谢!所以为了澄清,我只需要将我的想象部分设置为0? – lalalay17 2013-03-09 20:41:03

+0

您已经为不可变语义提供了get方法误导性名称之一。将setReal()重命名为getImaginary()。 – 2013-03-09 20:41:08

+0

点上@ j.karlsson - 这是一个错字:) – 2013-03-09 20:47:11

0

我建议你建立一个复杂的数类,因为你可能知道,你可以使用两个坐标值的平面表示复数,因此该类可以容纳两个双打这些。然后查看如何划分,乘,减和加复数,并且使方法划分,乘,减,加,其中每一个都将一个复数对象作为参数。

相关问题