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
如果输入:
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
code:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner reader = new Scanner(System.in);
int a, b, c, d, ch;
a = reader.nextInt();
b = reader.nextInt();
Complex com1 = new Complex(a, b);
while(reader.hasNext())
{
c = reader.nextInt();
d = reader.nextInt();
ch = reader.nextInt();
Complex com2 = new Complex(c, d);
if(ch == 1)
{
com1 = com1.add(com2);
//com.show();
}
else if(ch == 2)
{
com1 = com1.sub(com2);
//com.show();
}
else if(ch == 3)
{
com1 = com1.cheng(com2);
//com.show();
}
}
com1.show();
}
}
class Complex
{
int x, y;
public Complex(int x, int y) {
this.x = x;
this.y = y;
}
public Complex add(Complex com)
{
return new Complex(x+com.x, y+com.y);
}
public Complex sub(Complex com)
{
return new Complex(x-com.x, y-com.y);
}
public Complex cheng(Complex com)
{
int a, b;
a = x*com.x - y*com.y;
b = x*com.y + y*com.x;
return new Complex(a, b);
}
public void show()
{
if(x == 0 && y == 1){
System.out.println("i");
}
else if(x == 0 && y == -1){
System.out.println("-i");
}
else if(x ==0 && y != 0){
System.out.println(y+"i");
}
else if(x ==0 && y == 0){
System.out.println("0");
}
else if(x !=0 && y == 0){
System.out.println(x);
}
else if(x !=0 && y == 1){
System.out.println(x+"+i");
}
else if(x !=0 && y == -1){
System.out.println(x+"-i");
}
else if(x !=0 && y > 0){
System.out.println(x+"+"+y+"i");
}
else if(x !=0 && y < 0){
System.out.println(x+""+y+"i");
}
}
}
1011

被折叠的 条评论
为什么被折叠?



