算法笔记_156:算法提高 6-17复数四则运算(Java)
Posted 舞动的心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法笔记_156:算法提高 6-17复数四则运算(Java)相关的知识,希望对你有一定的参考价值。
目录
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); } }
以上是关于算法笔记_156:算法提高 6-17复数四则运算(Java)的主要内容,如果未能解决你的问题,请参考以下文章