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 + "=" + calculate(arrayList)); } / ***次の式を使用して結果を計算します* 1。現在の文字列が数字である場合、スタック* 2を直接入力します。現在の文字列が計算機の場合、スタック* 3の最初の2つの計算を取り出します。 system.out.println(result); stack <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(); // 2つの番号を取り出しますnum2 = stack.pop(); switch(symbol){case " +":stack.push(num2 + num1);壊す; case " - ":stack.push(num2 -num1);壊す; case " *":stack.push(num2 * num1);壊す; case " /":stack.push(num2 / num1);壊す;デフォルト:break; }}} return stack.pop(); } / ***順序トラバーサルは、後続のトラバーサルに変更されます* / private static arraylist <string> transform(arraylist <string> arraylist){stack <string> stack = new stack <>(); arrayList <string> result = new arrayList <>(); for(int index = 0; index <arraylist.size(); index ++){string symbol = arraylist.get(index); if(isdigital(symbol)){//数字の場合、それは直接出力です。 } else if(symbol.equals( ")")){string tmp; while((!(tmp = stack.pop())。equals( "(")){//試合が成功した後に停止しますresult.add(tmp);}}優先順位は、スタックが常にリリースされます。 } return result} / ** * @param src 3 * 5 + 8 * / private static arraylist <string> arraylist <>(); (!comchar.toString()。trim()。equals( ")){arraylist.add(comchar.tostring()。trim()); comchar.delete(0、comchar.length());} arraylist.add(ch +" "); comchar.append(ch);} (!comchar.toString()。equals( "")){arraylist.add()。トリム())。 &&!symbol. remol.equals( "/")&&!symbol.equals( ")} equals(")&&! "(":return 1; default:return 0;}} private static int outpriolity(string ch){case "+":case " - ":case ":case"/":return 5; case"):case 1; default:return 0;}}}}上記はすべて、この記事のコンテンツ全体です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。