標籤:scanner 通過 除法 result 擷取 分割 方案 列印 else
目錄
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"; 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)