第一題
簡單的 LISP 加減乘除陳述句決議并計算結果,四種運算子號為 add、sub、mul、div,分別為加減乘除。其中數字部分皆為整數。除法取整,除數為零輸出 error。
例子:
(add 3 5 7) 結果為 15
(sub 1 9) 結果為 -8
(mul 0 9) 結果為 0
(div 8 3) 結果為 2
(div 8 0) 結果為 error
(add (sub (div 8 2) (mul 1 9)) 20) 結果為 15
public static void main(String[] args) throws IOException {
String s="(add (sub (div 8 2) (mul 1 9)) 20)";
// for (String s1 : s.split("\\(")) {
// System.out.println(s1);
// }
System.out.println(operation(s));
}
public static String operation(String str){
if (str.indexOf("(",1)==-1){
String[] split = str.split("\\s+");
String ope = split[0].replace("(","");
int c1 = Integer.parseInt(split[1].replace(")",""));
int c2 = Integer.parseInt(split[2].replace(")",""));
int result=-1;
if ("div".equals(ope)&&c2==0){
return "error";
}
switch (ope){
case "div":
result=c1/c2;
break;
case "add":
result=c1+c2;
break;
case "mul":
result=c1*c2;
break;
case "sub":
result=c1-c2;
break;
}
return String.valueOf(result);
}
int left=str.lastIndexOf("("),right=str.indexOf(")",left);
String substring = str.substring(left, right+1);
String result = " "+operation(substring);
StringBuilder sb = new StringBuilder(str);
sb.replace(left,right+1,result.replace(")",""));
return operation(sb.toString());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/269999.html
標籤:Java EE
上一篇:求解,為啥雙擊eclipse的桌面快捷方式會提示找不到java虛擬機,但是在安裝路徑中點擊eclipse就可以正常運行?
