算法笔记_156:算法提高 6-17复数四则运算(Java)
生活随笔
收集整理的這篇文章主要介紹了
算法笔记_156:算法提高 6-17复数四则运算(Java)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
1 問題描述
2 解決方案
?
1 問題描述
設計復數庫,實現基本的復數加減乘除運算。輸入時只需分別鍵入實部和虛部,以空格分割,兩個復數之間用運算符分隔;輸出時按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";elseresult = result + a1 + c1 + "i";} else {if(c >= 0) result = result + a + "+" + c + "i";elseresult = 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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FamilyFilter(4)
- 下一篇: Java并发框架——AQS之怎样使用AQ