Java写复数的加减乘除(Complex)

//类的定义

package cn.itcat.demo04;                    //包名

public class Complex{
    protected double real;    //实部
    protected double image;//虚部
    
Complex() {
    this.real=0;
    this.image=0;
}

Complex(double real, double image) {//带参数的构造函数
    this.real = real;
    this.image = image;
}

public double getReal() {
    return real;
}

public void setReal(double real) {
    this.real = real;
}

public double getImage() {
    return image;
}

public void setImage(double image) {
    this.image = image;
}

//加法
public Complex Add(Complex a) {
    this.real=this.real+a.real;
    this.image=this.image+a.image;
    return this;
}

//减法
public Complex Sub(Complex a) {
    this.real=this.real-a.real;
    this.image=this.image-a.image;
    return this;
}

//乘法
public Complex Mul(Complex a) {
    this.real=this.real*a.real-this.image*a.image;
    
    this.image=this.image*a.real+((this.real+(this.image*a.image))/a.real)*a.image;
    return this;
}

//除法
public Complex Div(Complex a) {
    if(a.image==0){
        System.err.println("除数不能为0!!!");
    }
        this.real = (this.real*a.real+this.image*a.image)/(a.real*a.real+a.image*a.image);
        this.image = (this.image*a.real-(((this.real*(a.real*a.real+a.image*a.image)-(this.image*a.image))/a.real))*a.image)/(a.real*a.real+a.image*a.image);
        return this;
    }
}

//测试

package cn.itcat.demo04;

import java.util.Scanner;

public class TestComplex {
    public static void main(String args[]) {
        
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入第一个数的实部和虚部:");
            double real1=sc.nextDouble();
            double image1=sc.nextDouble();
            System.out.println("请输入第二个数的实部和虚部:");
            double real2=sc.nextDouble();
            double image2=sc.nextDouble();
            
            Complex C1=new Complex(real1,image1);
            Complex C2=new Complex(real2,image2);
            System.out.println("请输入运算符(-、+、*、/)其中一个:");
            Scanner S=new Scanner(System.in);
            String s=S.nextLine();
            char C=s.charAt(0);
            switch(C){
                        //加法
                case '+':
                    C1.Add(C2);
                        if(C1.image < 0){
                            System.out.println("加法:"+C1.real+C1.image+"i");
                        }
                        else{
                            System.out.println("加法:"+C1.real+"+"+C1.image+"i");
                        }
                        break;
                        //减法
                case '-':
                        C1.Sub(C2);
                        if(C1.image < 0){
                            System.out.println("减法:"+C1.real+C1.image+"i");
                        }else {
                            System.out.println("减法:"+C1.real+"+"+C1.image+"i");
                        }
                        break;
                        
                        //乘法
                case '*':    
                        C1.Mul(C2);            
                        System.out.println("乘法:"+C1.real+"+"+C1.image+"i");
                        break;
                        
                        //除法    
                case '/':
                        C1.Div(C2);                
                        System.out.println("除法:"+C1.real+"+"+C1.image+"i");
                        
                    }     
    }
}

发布了21 篇原创文章 · 获赞 4 · 访问量 3739

猜你喜欢

转载自blog.csdn.net/adim__/article/details/88238948