首页 > 代码库 > 算法笔记_156:算法提高 6-17复数四则运算(Java)
算法笔记_156:算法提高 6-17复数四则运算(Java)
目录
1 问题描述
2 解决方案
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。