复数的运算(类和对象)
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。
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
如果输入:
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
主要注意化简后的输出,乘法的算法是 实部等于实部乘实部减去虚部乘虚部,虚部等于实部乘虚部加另一实部乘另一虚部
化简之后虚部实部有一个为零的话只输出其中一个,如果虚部不为0 还要考虑是不是为1,如果是1 的话输出i,
虚部和实部都为0 就输出0
实部和虚部都不为0 要考虑虚部是否为1或者-1
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
while(input.hasNext()){
int addshi=input.nextInt();
int addxu=input.nextInt();
// int i=0;
while(input.hasNext()){
// i++;
int baddshi=input.nextInt();
int baddxu=input.nextInt();
int opertor=input.nextInt();
if(opertor==1){
addshi+=baddshi;
addxu+=baddxu;
}
else if(opertor==2){
addshi-=baddshi;
addxu-=baddxu;
}
else if(opertor==3){
int t=addshi*baddshi-addxu*baddxu;
int y=addshi*baddxu+addxu*baddshi;
addshi=t;
addxu=y;
}
}
if(addshi==0&&addxu!=0){
if(addxu==1)
{
System.out.println("i");
}
else if(addxu==-1){
System.out.println("-i");
}
else{
System.out.println(addxu+"i");
}
}
else if(addshi!=0&&addxu==0){
System.out.println(addshi);
}
else if(addshi==0&&addxu==0){
System.out.println("0");
}
else if (addxu!=0&&addshi!=0){
if(addxu>=0)
{
if(addxu==1){
System.out.println(addshi+"+i");
}
else{
System.out.println(addshi+"+"+addxu+"i");
}
}
else {
if(addxu==-1){
System.out.print(addshi);
System.out.println("-i");
}
else{
System.out.print(addshi);
System.out.println(addxu+"i");
}
}
}
}
}
}