目录
任务目标:
定义一个复数类complex,它的内部具有两个实例变量:realPart和imagPart,分别代表复数的实部和虚部,编程实现要求的数学运算:1)实现两个复数相加;2)实现两个复数相减;3)输出运算的结果。然后,调用上述方法实现两个复数18+2i、19-13i的相加、相减,并打印出结果。
算法思路:
本题要求实现复数的实部与虚部分别相加,我们可以利用四个方法的定义来分别进行处理,首先是正常将两组输入的数接收。
分别定义四个方法依次进行实部相加、虚部相加、实部相减、虚部相减,将值返回主函数。
因为给定的数值输出的时候,虚部是负数,输出的格式就不符,于是在主函数输出之前添加判断语句,如果虚部为负数,输出时就把“+”去掉;如果不是负数,就正常输出。
做到这就将题目要求实现,但是由于后面添加判断语句之后,就想到如果开头要将两组数用实部和虚部表现的话也要进行判断,并且如果原式或者运算后的结果如果有0,输出格式也不符合规范,于是就在开头的输出和末尾结果的输出分别添加判断语句,每处判断格式均一致,复制粘贴将元素更改即可。这样就能实现正负和0时的结果都能按格式输出。
实现代码:
package san25;
import java.util.Scanner;
public class FuShuXiangJia {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a=sc.nextInt();
int b=sc.nextInt();
int c=sc.nextInt();
int d=sc.nextInt();
/*
嵌套判断
*/
if(a == 0){ //判断输入的正负和0值情况
if(b == 0){
System.out.println(0);
}// a=0,b=0
else{
System.out.println(b+"i");
}//a=0,b!=0
}//a=0 大类
else if (a!=0){
if(b == 0){
System.out.println(a);
}//a!=0,b=0
else if(b<0){
System.out.println(a +""+ b+"i");
}//a!=0,b<0
else{
System.out.println(a +"+"+ b+"i");
}//a!=0,b>0
}//a!=0 大类
//以下判断均和上面判断格式一致
if(c == 0){
if(d == 0){
System.out.println(0);
}
else{
System.out.println(d+"i");
}
}
else if (c!=0){
if(d == 0){
System.out.println(c);
}
else if(d<0){
System.out.println(c +""+ d+"i");
}
else{
System.out.println(c +"+"+ d+"i");
}
}
int realPart =add(a,c);
int imagPart =add1(b,d);
int realPart1 =minus(a,c);
int imagPart1 =minus1(b,d);
//以下判断均和上面判断格式一致
if(realPart == 0){ //判断输出的正负和0值情况
if(imagPart == 0){
System.out.println(0);
}
else{
System.out.println(imagPart+"i");
}
}
else if (realPart!=0){
if(imagPart == 0){
System.out.println(realPart);
}
else if(imagPart<0){
System.out.println(realPart +""+ imagPart+"i");
}
else{
System.out.println(realPart +"+"+ imagPart+"i");
}
}
//以下判断均和上面判断格式一致
if(realPart1 == 0){
if(imagPart1 == 0){
System.out.println(0);
}
else{
System.out.println(imagPart1+"i");
}
}
else if (realPart1!=0){
if(imagPart1 == 0){
System.out.println(realPart1);
}
else if(imagPart1<0){
System.out.println(realPart1 +""+ imagPart1+"i");
}
else{
System.out.println(realPart1 +"+"+ imagPart1+"i");
}
}
}
/*
定义四个方法,分别用来实现实部相加、虚部相加、实部相减、虚部相减
返回值
*/
public static int add(int a,int c){
int x = a + c;
return x;
}
public static int add1(int b, int d){
int y = b + d;
return y;
}
public static int minus(int a,int c){
int p = a - c;
return p;
}
public static int minus1(int b, int d){
int q = b - d;
return q;
}
}