目录
1 问题描述
设计复数库,实现基本的复数加减乘除运算。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。
注意考虑特殊情况,无法计算时输出字符串"error"。
样例输入
2 4 * -3 2
样例输出
-14-8i
样例输入
3 -2 + -1 3
样例输出
2+1i
2 解决方案
此题判断错误主要在除法运算上,除法运算有可能获得小数,所以在获取输入数字时,就得用double类型来定义,但是下面的代码在系统评分中有一组数据无法通过,改了好几遍,选择放弃>~<...
具体代码如下:
import java.util.Scanner; public class Main { public void getResult(String A) {
String result = "";
String[] temp = A.split(" ");
double a = Integer.valueOf(temp[0]);
double b = Integer.valueOf(temp[1]);
double c = Integer.valueOf(temp[3]);
double d = Integer.valueOf(temp[4]);
if(temp[2].equals("+")) {
a = a + c;
c = b + d;
} else if(temp[2].equals("-")) {
a = a - c;
c = b - d;
} else if(temp[2].equals("*")) {
double a1 = a;
a = a*c - b*d;
c = a1*d + b*c;
} else if(temp[2].equals("/")) {
double a1 = a;
if(c*c + d*d == 0) {
System.out.println("error");
return;
}
a = (a*c + b*d) / (c*c + d*d);
c = (b*c - a1*d) / (c*c + d*d);
}
if(!temp[2].equals("/")) {
int a1 = (int) a;
int c1 = (int) c;
if(c1 >= 0)
result = result + a1 + "+" + c1 + "i";
else
result = result + a1 + c1 + "i";
} else {
if(c >= 0)
result = result + a + "+" + c + "i";
else
result = result + a + c + "i";
}
System.out.println(result);
} public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
String A = in.nextLine();
test.getResult(A);
}
}