复数的运算(类和对象)(Java)

复数的运算(类和对象)
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
设计一个类Complex,用于封装对复数的下列操作:
成员变量:实部real,虚部image,均为整数变量;
构造方法:无参构造方法、有参构造方法(参数2个)
成员方法:含两个复数的加、减、乘操作。
复数相加举例: (1+2i)+(3+4i)= 4 + 6i
复数相减举例: (1+2i)-(3+4i)= -2 - 2i
复数相乘举例: (1+2i)*(3+4i)= -5 + 10i
要求:对复数进行连环运算。
Input

输入有多行。
第一行有两个整数,代表复数X的实部和虚部。
后续各行的第一个和第二个数表示复数Y的实部和虚部,第三个数表示操作符op: 1——复数X和Y相加;2——复数X和Y相减;3——复数X和Y相乘。
Output

计算数据输出其简化复数形式,如:-2-2i、-4、-3i、1+2i、0。

Sample Input

1 1
3 4 2
5 2 1
2 -1 3
0 2 2

Sample Output

5-7i

Hint
输入与输出形式示例:
如果输入:
2 3
-2 1 1
则输出:4i
如果输入:
1 2
-1 -2 1
则输出:0

复数的输出形式示例:
实部 虚部 输出形式
0 0 0
-4 0 -4
0 4 4i
3 2 3+2i
3 -2 3-2i
Source
zhouxq


import java.util.Scanner;
class Complex{
    private int real;
    private int image;
    Complex(){
        real = image = 0;
    }
    Complex(int real,int image){
        this.real = real;
        this.image = image;
    }
    public void add(Complex e) {
        this.real = this.real + e.getReal();
        this.image = this.image + e.getImage();
    }
    public void jian(Complex e) {
        this.real = this.real - e.getReal();
        this.image = this.image - e.getImage();
    }
    public void multi(Complex e) {
        int x = real;
        this.real = this.real * e.getReal() - this.image*e.getImage();           //real变化,所以需要x暂时保存原来的real值
        this.image = this.image *e.getReal() + x * e.getImage();
   }
    public int getReal() {
        return real;
    }
    public int getImage() {
        return image;
    }
}
public class Main22 {
    public static void main(String args[]){
        Scanner input = new Scanner(System.in);
        int real = input.nextInt();
        int image = input.nextInt();
        Complex com = new Complex(real,image);
        while(input.hasNext()) {
            int real2 = input.nextInt();
            int image2 = input.nextInt();
            int op = input.nextInt();
            Complex c = new Complex(real2,image2);
            if(op == 1) {
                com.add(c);
            }
            else if(op == 2) {
                com.jian(c);
            }
            else if(op == 3) {
                com.multi(c);
            }
        }
        real = com.getReal();
        image = com.getImage();
        //输出控制
        if(real == 0 && image == 0) {
            System.out.println("0");
        }
        else if(real == 0 && image == 1) {
            System.out.println("i");
        }
        else if(real == 0 && image == -1) {
            System.out.println("-i");
        }
        else if(real == 0) {
            System.out.println(image+"i");
        }
        else if(image == 0) {
            System.out.println(real);
        }
        else if(real != 0 && image == 1) {
            System.out.println(real+"i");
        }
        else if(real != 0 && image == -1) {
            System.out.println(real+"-i");
        }
        else if(image < 0) {
            System.out.print(real);
            System.out.println(image+"i");
        }
        else {
            System.out.println(real+"+"+image+"i");
        }

        input.close();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40014462/article/details/80075619