Java에서 구현 된 계산기는 원리가 코드 주석으로 읽히고 특정 컨텐츠는 다음과 같습니다.
public class mycalculator {public static void main (String [] args) {String obj = "6+ (8/2)+6/3+1*8+30"; ArrayList <string> arraylist = strformat (OBJ); System.out.println (obj + "=" + 계산 (ArrayList)); } / *** 후속 표현식을 사용하여 결과를 계산하십시오* 1. 현재 문자열이 숫자 인 경우 스택에 직접 입력하십시오* 2. 현재 문자열이 계산기 인 경우 스택의 첫 두 계산* 3. 계산 결과를 스택에 넣고 스택의 마지막 요소가 필요한 결과 (ArrayList <string>) {arraylist <string> at arraylist <string>입니다. 변환 (obj); System.out.println (결과); 스택 <integer> stack = new Stack <> (); for (int i = 0; i <result.size (); i ++) {String symbol = result.get (i); if (isdigital (symbol)) {// 숫자는 직접 stack.push (integer.parseint (symbol)); } else {// 연산자 int num1, num2; num1 = stack.pop (); // 두 숫자를 꺼냅니다. num2 = stack.pop (); 스위치 (기호) {case " +": stack.push (num2 + num1); 부서지다; 사례 " -": stack.push (num2 -num1); 부서지다; 사례 " *": stack.push (num2 * num1); 부서지다; 사례 " /": stack.push (num2 / num1); 부서지다; 기본값 : 브레이크; }}} return stack.pop (); } / *** 순차 트래버스는 후속 Traversal* / private static arraylist <strang> transform (arraylist <string> arraylist) {stack <string> stack = new stack <> (); ArrayList <String> 결과 = New ArrayList <> (); for (int index = 0; index <arraylist.size (); index ++) {String symbol = arraylist.get (index); if (isdigital (symbol)) {// 숫자 인 경우 직접 출력됩니다 .add (Symbol); } else if (symbol.equals ( ")")) {문자열 tmp; while (! 우선 순위는 스택에서 우선 순위가 낮으며, stack.pop (stack.isempty) {break. } 반환 결과} / ** * arraylist에 문자열을 형식으로 형식 * @param src 3 * 5 + 8; arraylist <> (); (! comchar.toString (). trim (). Equals ( ")) {arraylist.add (comchar.toString ()); comchar.delete (0, comchar.length ()); arraylist.add (ch +" "; 계속;} comchar.append (ch);} (! comchar.toString (). trim (). && ") &&! symbol.equals ("*") "(": return 1; default : return 0;}} private static int-friority (string ch) {switch (ch) {case "+": case "-": return 3; case "/": return 5; case ": return 1;위의 모든 내용은이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.