import java.util.Stack;import javax.swing.text.ChangedCharSetException;public class T { public static void main(String[] args){ System.out.print("请输入算式:"); Scanner sc=new Scanner(System.in); String formula=sc.nextLine(); System.out.print(change(formula)); }public static Stack<String> change(String expression) { Stack<Character> s1=new Stack<>();s1.push('#'); Stack<String> s2=new Stack<>(); char[] chars=expression.toCharArray(); StringBuffer s=new StringBuffer(); for(int i=0;i<chars.length;i++) { if(Character.isDigit(chars[i])) { while(Character.isDigit(chars[i])||chars[i]=='.') { s.append(chars[i]); }s2.push(s.toString()); } else { switch(chars[i]){ case'(':s1.push(chars[i]);break; case')':while(!s1.peek().equals('(')){ s2.push(s1.pop().toString()); } s1.pop();break; case'+': case'-': case'/': case'*':; s1.push(chars[i]); if(get(chars[i+1])>get(chars[i])) { s1.push(chars[i+1]); }else { s2.push(s1.peek().toString()); } } } }return s2; } public static int get(char c) { int m=0; switch(c) { case'+': case'-':m=1;break; case'/': case'*':m=2;break; case'(': case')':m=0;break; case'#':m=-1;break;} return m; } }
添加回答
举报
0/150
提交
取消