zoukankan      html  css  js  c++  java
  • [java]输入一个算术表达式输出结果

    动手有益。

    输入一个表达式,没有括号,数字小于0-9之间,输出计算结果,所有的中间结果化为整形。
    例如:  输入:3+8×2/9-2  
    输出:2  

         /**
         * input a calculate string, calcuate the value
         * the number between 0-9
         * round the middle vlaue to int
         * */
        public static void main(String[] args) {    
    
            //8*6+2-6/3*6+2 
            String cal;//=new Scanner(System.in).nextLine();
            cal="8*6+2-6/3*6+2";
            String[] car=new String[cal.length()];
            for (int i = 0; i < car.length; i++) {
                car[i]=""+cal.charAt(i);
            }
            
            System.err.println(car);
            
            //do * and /
            for (int i = 0; i < car.length; i++) {
                if(car[i].equals("*"))
                {
                    car[i+1]= ""+(Integer.parseInt(car[i-1]) * Integer.parseInt(car[i+1]));
                    car[i-1]="";
                    car[i]="";
                    
                }else if(car[i].equals("/"))
                {
                    car[i+1]= ""+(Integer)(Integer.parseInt(car[i-1]) / Integer.parseInt(car[i+1]));
                    car[i-1]="";
                    car[i]="";
                }
                else {
                    continue;
                }
            }
            
            //do + and -
            int index=0;
            for (int i = 0; i < car.length; i++) {
                index=i;            
                if(car[i].equals("+"))
                {
                    while(car[++index].equals("")){}                    
                    car[index]= ""+(Integer.parseInt(car[i-1]) + Integer.parseInt(car[index]));
                    car[i-1]="";
                    car[i]="";
                    
                }else if(car[i].equals("-"))
                {
                    while(car[++index].equals("")){}                    
                    car[index]= ""+(Integer.parseInt(car[i-1]) - Integer.parseInt(car[index]));
                    car[i-1]="";
                    car[i]="";
                }
                else {
                    continue;
                }
            }
            
            System.err.println(cal+" = "+car[car.length-1]);
            
        }    
  • 相关阅读:
    【leetcode】下一个排列
    【leetcode】配对交换
    【leetcode】两个相同字符之间的最长子字符串
    052-126&127
    052-125
    052-124
    052-123
    052-122
    052-121
    052-120
  • 原文地址:https://www.cnblogs.com/wancy86/p/formulaCalcuate.html
Copyright © 2011-2022 走看看