1. 程式人生 > >複數的運算(類和物件)

複數的運算(類和物件)

複數的運算(類和物件)

Time Limit: 1000MS  Memory Limit: 65536KB Submit  Statistic  Discuss

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——複數XY相加;2——複數XY相減;3——複數X

Y相乘。

Output

計算資料輸出其簡化複數形式,如:-2-2i、-4、-3i1+2i0

Example Input

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

Example 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
import java.util.Scanner;
class Complex
{
	int real;
	int image;
	public Complex()
	{
	}
	public Complex(int real,int image)
	{
		this.real=real;
		this.image=image;
	}
	public Complex add(Complex r)
	{
		int a=this.real+r.real;
		int b=this.image+r.image;
		Complex result=new Complex(a,b);
		return result;
	}
	public Complex sub(Complex r)
	{
		int a=this.real-r.real;
		int b=this.image-r.image;
		Complex result=new Complex(a,b);
		return result;
	}
	public Complex muti(Complex r)
	{
		int a=this.real*r.real-this.image*r.image;
		int b=this.real*r.image+this.image*r.real;
		Complex result=new Complex(a,b);
		return result;
	}
}
public class Main {
	
	public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	int real;
	int image;
	real=in.nextInt();
	image=in.nextInt();
	Complex complex=new Complex(real,image);
	while(in.hasNext())
	{
		real=in.nextInt();
		image=in.nextInt();
		int f=in.nextInt();
		Complex r=new Complex(real,image);
		if(f==1)
		{
			complex=complex.add(r);
		}
		else if(f==2)
		{
			complex=complex.sub(r);
		}
		else if(f==3)
		{
			complex=complex.muti(r);
		}
	}
	if(complex.real==0)
	{
		if(complex.image==0)System.out.println("0");
		else if(complex.image==1)System.out.println("i");
		else if(complex.image==-1)System.out.println("-i");
		else System.out.println(complex.image+"i");
	}
	else if(complex.image==0)
		System.out.println(complex.real);
	else
	{
		if(complex.image==1)
		{
			System.out.println(complex.real+"+"+"i");
		}
		else if(complex.image==-1)
		{
			System.out.println(complex.real+"-i");
		}
		else if(complex.image>0)
		{
			System.out.println(complex.real+"+"+complex.image+"i");
		}
		else
		{
			System.out.println(""+complex.real+complex.image+"i");
		}
	}
}

}