首页 > Java开发 > 用java实现复数的加减乘除运算

用java实现复数的加减乘除运算

用java实现复数的加减乘除运算

 

1. 背景

老师在课上布置了几道java编程题,此为其中之一

 

2. 题目内容

 

 

设计一个类Complex,用于封装对复数的下列操作:
(1)一个带参数的构造函数,用于初始化复数成员
(2)一个不带参数的构造函数,调用代参数的构造函数完成对复数成员的初始化。
(3)实现两个复数的加法,减法的静态方法和实例方法。
(4)以复数的标准形式:x+iy 输出此复数
(5) 写两个函数,分别获得复数的实部getReal(),getImage()和虚部。

老师原题如上,自己做了两个复数的加减乘除运算,使用的是实例方法。如果要写静态方法,即类方法,要加static,再根据相应变化修改。区别是:实例方法既可调用实例变量和实例方法,又可调用类变量和类方法。类方法只可调用类变量和类方法。因时间关系,明天还有课,自己就暂且写了实例。微笑

 

3. 具体代码与解释

 

 

[java][/java] view plaincopy

  1. <span style="font-family:SimSun; font-size:14px">package Four;
  2. /**
  3.  * @author Kun Sun
  4.  * @Date: 2013.10.15
  5.  */
  6. import java.util.Scanner;
  7. public class Complex { // 复数类
  8.     double real;  // 实部
  9.     double image; // 虚部
  10.     Complex(){  // 不带参数的构造方法
  11.         Scanner input = new Scanner(System.in);
  12.         double real = input.nextDouble();
  13.         double image = input.nextDouble();
  14.         Complex(real,image);
  15.     }
  16.     private void Complex(double real, double image) { // 供不带参数的构造方法调用
  17.         // TODO Auto-generated method stub
  18.         this.real = real;
  19.         this.image = image;
  20.     }
  21.     Complex(double real,double image){ // 带参数的构造方法
  22.         this.real = real;
  23.         this.image = image;
  24.     }
  25.     public double getReal() {
  26.         return real;
  27.     }
  28.     public void setReal(double real) {
  29.         this.real = real;
  30.     }
  31.     public double getImage() {
  32.         return image;
  33.     }
  34.     public void setImage(double image) {
  35.         this.image = image;
  36.     }
  37.     Complex add(Complex a){ // 复数相加
  38.         double real2 = a.getReal();
  39.         double image2 = a.getImage();
  40.         double newReal = real + real2;
  41.         double newImage = image + image2;
  42.         Complex result = new Complex(newReal,newImage);
  43.         return result;
  44.     }
  45.     Complex sub(Complex a){ // 复数相减
  46.         double real2 = a.getReal();
  47.         double image2 = a.getImage();
  48.         double newReal = real - real2;
  49.         double newImage = image - image2;
  50.         Complex result = new Complex(newReal,newImage);
  51.         return result;
  52.     }
  53.     Complex mul(Complex a){ // 复数相乘
  54.         double real2 = a.getReal();
  55.         double image2 = a.getImage();
  56.         double newReal = real*real2 - image*image2;
  57.         double newImage = image*real2 + real*image2;
  58.         Complex result = new Complex(newReal,newImage);
  59.         return result;
  60.     }
  61.     Complex div(Complex a){ // 复数相除
  62.         double real2 = a.getReal();
  63.         double image2 = a.getImage();
  64.         double newReal = (real*real2 + image*image2)/(real2*real2 + image2*image2);
  65.         double newImage = (image*real2 - real*image2)/(real2*real2 + image2*image2);
  66.         Complex result = new Complex(newReal,newImage);
  67.         return result;
  68.     }
  69.     public void print(){ // 输出
  70.         if(image > 0){
  71.             System.out.println(real + " + " + image + "i");
  72.         }else if(image < 0){
  73.             System.out.println(real + "" + image + "i");
  74.         }else{
  75.             System.out.println(real);
  76.         }
  77.     }
  78. }
  79. </span>

 

 

 

[java][/java] view plaincopy

  1. <span style="font-family:SimSun; font-size:14px">package Four;
  2. /**
  3.  * @author Kun Sun
  4.  * @Date: 2013.10.15
  5.  */
  6. public class MainClass { // 用于测试复数类
  7.     /**
  8.      * @param args
  9.      */
  10.     public static void main(String[] args) {
  11.         // TODO Auto-generated method stub
  12.         System.out.println("请用户输入第一个复数的实部和虚部:");
  13.         Complex data1 = new Complex();
  14.         System.out.println("请用户输入第二个复数的实部和虚部:");
  15.         Complex data2 = new Complex();
  16.         // 以下分别为加减乘除
  17.         Complex result_add = data1.add(data2);
  18.         Complex result_sub = data1.sub(data2);
  19.         Complex result_mul = data1.mul(data2);
  20.         Complex result_div = data1.div(data2);
  21.         result_add.print();
  22.         result_sub.print();
  23.         result_mul.print();
  24.         result_div.print();
  25.     }
  26. }
  27. </span>

 
4. 测试运行结果截图

 


本文固定链接: http://www.devba.com/index.php/archives/3102.html | 开发吧

报歉!评论已关闭.