寫一程式,定義“複數”類別 complex。複數形式為 a+bi,其中a為實部係數,b
為虛部係數。詳細內容如下:
(a) 類別名稱為 complex , 分別包含兩個名為real 及imaginary 的instance
variable,型別為double。
(b) 一接受兩個double型態之參數之constructor,負責將第一個參數指定給real
成員,第二個參數指定給imaginary成員。
(c) 一接受一個double型態之參數之constructor,負責將第一個參數指定給real
成員,並將imaginary成員值設定為0。
(d) 一無參數之constructor,將real及imaginary成員值設定為0。
(e) 一個名為equals之method,接收一complex型別之參數,負責比較兩複數是否
相同,傳回boolean值(相同為True,否則為False)。
(f) 一個名為toString之method,接收一complex型別之參數,負責印出該複數目
前之值(如 5+7i)。
(g) 一名為addition之method,無傳回值,接收一complex型別之參數,將參數之
複數依複數加法加至目前之成員。
(h) 一名為substraction之method,無傳回值,接收一complex型別之參數,將參
數之複數依複數減法由目前之成員相減。
(i) 一名為multiplication之method,無傳回值,接收一complex型別之參數,將
參數之複數依複數乘法運算後存入目前之成員。 [ 註複數乘法:
(a+bi)*(c+di)=(ac-bd)+(ad+bc)i]主程式部分請依下列要求依序完成:
(i) 讓使用者依序輸入兩個複數之實部係數及虛部係數,並印出兩個複數及兩複
數是否相等。 (需引用constructor、toString、equals)
(ii) 利用addition method,計算並印出兩複數相加後之結果。 (假定兩複數object
分別為 c1、c2,則需引用 c1.addition(c2) )
(iii)利用substraction method,計算並印出兩複數相減後之結果。 (假定兩複數
object分別為 c1、c2,則需引用 c1.substraction(c2) )
(iv) 利用multiplication method,計算並印出兩複數相乘後之結果。 (假定兩複數
object分別為 c1、c2,則需引用 c1.multiplication(c2) )
(v) 分別印出目前兩複數之值 (需引用toString)
=======================================================================
以上為題目,虛心求教!感謝。

解决方案 »

  1.   

    写一程序,定义“复数”类别 complex。复数形式为 a+bi,其中a为实部系数,b
    为虚部系数。详细内容如下:
    (a) 类别名称为 complex , 分别包含两个名为real 及imaginary 的instance
    variable,型别为double。
    (b) 一接受两个double型态之参数之constructor,负责将第一个参数指定给real
    成员,第二个参数指定给imaginary成员。
    (c) 一接受一个double型态之参数之constructor,负责将第一个参数指定给real
    成员,并将imaginary成员值设定为0。
    (d) 一无参数之constructor,将real及imaginary成员值设定为0。
    (e) 一个名为equals之method,接收一complex型别之参数,负责比较两复数是否
    相同,传回boolean值(相同为True,否则为False)。
    (f) 一个名为toString之method,接收一complex型别之参数,负责印出该复数目
    前之值(如 5+7i)。
    (g) 一名为addition之method,无传回值,接收一complex型别之参数,将参数之
    复数依复数加法加至目前之成员。
    (h) 一名为substraction之method,无传回值,接收一complex型别之参数,将参
    数之复数依复数减法由目前之成员相减。
    (i) 一名为multiplication之method,无传回值,接收一complex型别之参数,将
    参数之复数依复数乘法运算后存入目前之成员。 [ 注复数乘法:
    (a+bi)*(c+di)=(ac-bd)+(ad+bc)i]
    主程序部分请依下列要求依序完成:
    (i) 让使用者依序输入两个复数之实部系数及虚部系数,并印出两个复数及两复
    数是否相等。 (需引用constructor、toString、equals)
    (ii) 利用addition method,计算并印出两复数相加后之结果。 (假定两复数object
    分别为 c1、c2,则需引用 c1.addition(c2) )
    (iii)利用substraction method,计算并印出两复数相减后之结果。 (假定两复数
    object分别为 c1、c2,则需引用 c1.substraction(c2) )
    (iv) 利用multiplication method,计算并印出两复数相乘后之结果。 (假定两复数
    object分别为 c1、c2,则需引用 c1.multiplication(c2) )
    (v) 分别印出目前两复数之值 (需引用toString)
      

  2.   

    呃...我自己做出來了
    也許不甚好,不過還是把程式碼貼除來讓大家指教指教。
    import java.util.Scanner;
    public class prog1
    {
      public static void main(String args[])
      {
        Scanner keyboard = new Scanner(System.in);    
        System.out.println("請輸入c1複數的實部係數:");
        double pa1=keyboard.nextDouble();
        System.out.println("請輸入c1複數的虛部係數:");
        double pb1=keyboard.nextDouble();        System.out.println("請輸入c2複數的實部係數:");
        double pa2=keyboard.nextDouble();
        System.out.println("請輸入c2複數的虛部係數:");
        double pb2=keyboard.nextDouble();
        complex c1=new complex(pa1, pb1);
        complex c2=new complex(pa2, pb2); 
          
        System.out.println("您輸入的c1複數值"+c1.toString());
        System.out.println("您輸入的c2複數值"+c2.toString());
        if (c1.equals(c2))    
           System.out.println("兩複數相等");
        else
           System.out.println("兩複數不相等");  
         
        c1.addition(c2);
        System.out.println("兩複數相加後之結果:");
        System.out.println(c1.toString());    c1.substraction(c2);
        System.out.println("兩複數相減後之結果:");
        System.out.println(c1.toString());
     
        c1.multiplication(c2);
        System.out.println("兩複數相乘後之結果:");
        System.out.println(c1.toString());    System.out.println("目前c1矩陣的值:");
        System.out.println(c1.toString());
        System.out.println("目前c2矩陣的值:");
        System.out.println(c2.toString());
      }
    }import java.util.Scanner;
    public class complex
    {
      public double real;
      public double imaginary;
      
      public complex(double pa, double pb)
      {
        real=pa;
        imaginary=pb;
      }  public complex(double pa)
      {
        real=pa;
        imaginary=0;
      }  public complex()
      {
        real=0;
        imaginary=0;
      }  public boolean equals(complex other)
      {
        return ((this.real==other.real)&&(this.imaginary==other.imaginary));
      }  public String toString()
      {
        return (real+"+"+imaginary+"i");
      }  public void addition(complex pa)
      {
        this.real=real+pa.real;
        this.imaginary=imaginary+pa.imaginary;
      }  public void substraction(complex pa)
      {
        this.real=real-pa.real;
        this.imaginary=imaginary-pa.imaginary;
      }  public void multiplication(complex pa)
      {
        this.real=(real*pa.real)-(imaginary*pa.imaginary);
        this.imaginary=(real*pa.imaginary)+(imaginary*pa.real);
      }  
    }以上,compile過的了,題意應該也沒理解錯誤吧。
      

  3.   

    呃...發現有部份錯了,我全部全貼!
    import java.util.Scanner;
    public class prog1
    {
      public static void main(String args[])
      {
        Scanner keyboard = new Scanner(System.in);    
        System.out.println("請輸入c1複數的實部係數:");
        double pa1=keyboard.nextDouble();
        System.out.println("請輸入c1複數的虛部係數:");
        double pb1=keyboard.nextDouble();        System.out.println("請輸入c2複數的實部係數:");
        double pa2=keyboard.nextDouble();
        System.out.println("請輸入c2複數的虛部係數:");
        double pb2=keyboard.nextDouble();
        complex c1=new complex(pa1, pb1);
        complex c2=new complex(pa2, pb2); 
          
        System.out.println("您輸入的c1複數值"+c1.toString());
        System.out.println("您輸入的c2複數值"+c2.toString());
        if (c1.equals(c2))    
           System.out.println("兩複數相等");
        else
           System.out.println("兩複數不相等");  
         
        c1.addition(c2);
        System.out.println("兩複數相加後之結果:");
        System.out.println(c1.toString());    c1.substraction(c2);
        System.out.println("兩複數相減後之結果:");
        System.out.println(c1.toString());
     
        c1.multiplication(c2);
        System.out.println("兩複數相乘後之結果:");
        System.out.println(c1.toString());    System.out.println("目前c1複數的值:");
        System.out.println(c1.toString());
        System.out.println("目前c2複數的值:");
        System.out.println(c2.toString());
      }
    }
    import java.util.Scanner;
    public class complex
    {
      public double real;
      public double imaginary;
      
      public complex(double pa, double pb)
      {
        real=pa;
        imaginary=pb;
      }  public complex(double pa)
      {
        real=pa;
        imaginary=0;
      }  public complex()
      {
        real=0;
        imaginary=0;
      }  public boolean equals(complex other)
      {
        return ((this.real==other.real)&&(this.imaginary==other.imaginary));
      }  public String toString()
      {
        return (real+"+"+imaginary+"i");
      }  public void addition(complex pa)
      {
        this.real=real+pa.real;
        this.imaginary=imaginary+pa.imaginary;
      }  public void substraction(complex pa)
      {
        this.real=real-pa.real;
        this.imaginary=imaginary-pa.imaginary;
      }  public void multiplication(complex pa)
      {
        this.real=(real*pa.real)-(imaginary*pa.imaginary);
        this.imaginary=(real*pa.imaginary)+(imaginary*pa.real);
      }  
    }