3.0013.36
各种测试用例都完美通过,但是!却不能AC,求大神解救,感激不尽。
import java.util.Scanner;import java.util.Stack; public class Main{ /** * @param args */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while( scanner.hasNext() ){ String str = scanner.nextLine(); if(str.equals("0")){ break; } String exprisson = str + " " + "="; String analysis[] = exprisson.split(" "); Stack<Double> numStack = new Stack<Double>(); Stack<String> opStack = new Stack<String>(); if(analysis.length <= 3){ System.out.println(String.format("%.2f",Double.valueOf(analysis[0]))); continue; } double result = 0; for (int i = 0; i < analysis.length; i++) { if(defElement(analysis[i]) == 0){ numStack.push(Double.valueOf(analysis[i])); continue; } if(defElement(analysis[i]) == 1){ if(opStack.empty()){ opStack.push(analysis[i]); continue; }else{ while(!opStack.empty()){ result = caculate(numStack.pop(),numStack.pop(),opStack.pop()); numStack.push(result); } } opStack.push(analysis[i]); continue; } if(defElement(analysis[i]) == 2){ opStack.push(analysis[i]); continue; } if(defElement(analysis[i]) == -2){ while(!opStack.empty()){ result = caculate(numStack.pop(),numStack.pop(),opStack.pop()); numStack.push(result); } } } System.out.println(String.format("%.2f",numStack.pop())); } } //计算数值 public static double caculate(Double a, Double b,String op){ if(op.equals("+")){ return a+b; }else if(op.equals("-")){ return b-a; }else if(op.equals("*")){ return a*b; }else if(op.equals("/")){ return b/a; } return 0; } //定义元素,数值返回0,符号+-返回1,符号*/返回2,符号=返回-2 public static int defElement(String element){ int result = -1; char c = element.charAt(0); switch (c) { case '+': result = 1; break; case '-': result = 1; break; case '*': result = 2; break; case '/': result = 2; break; case '=': result = -2; break; default: result = 0; break; } return result; } } /************************************************************** Problem: 1019 User: yihukurama Language: Java Result: Wrong Answer****************************************************************/