<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0
    import java.util.ArrayList;
    import java.util.List;

    public class MathString {
        
        public static void main(String[] args){
            String press = "12*12.22-7*(23.45-(-2))+(12-34)";
            press = press.replaceAll("[\\[\\{]", "(").replaceAll("[\\]\\}]", ")");
            System.out.println(parseString(press));
        }
        
        public static String parseString(String press){
            int lasc = press.lastIndexOf("(");
            if(lasc==-1){
                return String.valueOf(addString(press));
            }
            
            String firstKHString = press.substring(0,lasc);
            String lastFKHString = press.substring(lasc+1);
            //System.out.println("firstKHString---"+firstKHString);
            //System.out.println("lastFKHString---"+lastFKHString);

            int firc = lastFKHString.indexOf(")");
            lastFKHString = press.substring(firc+lasc+2);
            //System.out.println("lastFKHString---"+lastFKHString);
            String currentPress = press.substring(lasc+1,firc+lasc+1);
            //System.out.println(currentPress);

            return parseString(firstKHString+addString(currentPress)+lastFKHString);
        
        } 
        public static double addString(String press){
            //System.out.println(press);
            press = repAddString(press);
            press = repString(press);
            //System.out.println(press);
            String[] numbers = press.split("[\\+]");
            double number = 0;
            
            List<String> fhs = getFHAdd(press);
            for(int i=0 ; i<numbers.length; i++ ){
                String curNum = numbers[i];
                //System.out.println(curNum);
                if(curNum.equals("")){
                    curNum="0";
                }
                if(fhs.get(i).equals("+")){
                    number = number + mathString(curNum);
                }else if(fhs.get(i).equals("-")){
                    number = number - mathString(curNum);
                }
            }
            return number;
        }
        
        public static double mathString(String press){
          /*int firstCH = press.indexOf("*");
            int firstC = press.indexOf("/");
            if(firstCH == -1 && firstC == -1){
                return Double.parseDouble(press);
            }
            int firstindex = firstC < firstCH ? firstC : firstCH;
          */        
            press = repAddString(press);
            String[] numbers = press.split("[\\*\\/]");
            List<String> fhs = getFH(press);
            double result = 1;
            for(int i=0 ; i<numbers.length; i++){
                if(fhs.get(i).equals("*")){
                    result = result * Double.parseDouble(numbers[i]);
                }else if(fhs.get(i).equals("/")){
                    if(Double.parseDouble(numbers[i])==0){
                        throw new ArithmeticException("表達(dá)式中被除數(shù)有空值!");
                    }
                    result = result / Double.parseDouble(numbers[i]);
                }
            }        
            return result;
        }
        
        
        
        public static String repAddString(String press){
            return press.replace("++", "+").replace("--", "+").replace("+-", "-").replace("-+", "-");
        }
        
        public static String repString(String press){
            StringBuffer sb = new StringBuffer();
            char ch = 0;
            for(char c:press.toCharArray()){
                if(c=='-'&&'/'!=ch&&'*'!=ch){
                    sb.append("+");
                }
                ch = c;
                sb.append(c);
            }
            return sb.toString();
        }
        public static List<String> getFH(String press){
            char[] chars = press.toCharArray();
            List<String> fhs = new ArrayList<String>();
            fhs.add("*");
            for(char c : chars){
                if(c=='*' || c=='/'){
                    fhs.add(String.valueOf(c));
                }
            }
            return fhs;
        }
        
        public static List<String> getFHAdd(String press){
            char[] chars = press.toCharArray();
            List<String> fhs = new ArrayList<String>();
            fhs.add("+");
            for(char c : chars){
                if(c=='+'){
                    fhs.add(String.valueOf(c));
                }
            }
            return fhs;
        }
        
    }
    posted on 2011-07-01 10:09 墻頭草 閱讀(1428) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 亚洲欧洲自拍拍偷综合| 亚洲国产成人精品无码区花野真一| 91麻豆国产免费观看| 亚洲一区二区三区久久久久| 午夜免费福利网站| 成av免费大片黄在线观看| 在线电影你懂的亚洲| 亚洲日产无码中文字幕| 久久国产精品成人片免费| 亚洲欧美日韩国产成人| 国产亚洲精久久久久久无码77777| 99re6在线视频精品免费下载| 亚洲精品无码aⅴ中文字幕蜜桃| 精品国产香蕉伊思人在线在线亚洲一区二区 | 免费无码不卡视频在线观看| 久久久久久噜噜精品免费直播 | 日韩毛片无码永久免费看| 免费黄网站在线看| 亚洲va中文字幕| 久久精品亚洲一区二区三区浴池| 免费毛片在线视频| 亚洲免费视频网址| 一级免费黄色大片| 中文字幕乱码亚洲无线三区| 亚洲老妈激情一区二区三区| 美女被免费视频网站a国产| 午夜爽爽爽男女免费观看影院| 精品久久亚洲一级α| 亚洲精品成人图区| 亚洲愉拍99热成人精品热久久| 香蕉高清免费永久在线视频| 日韩精品久久久久久免费| 污视频网站在线观看免费| 亚洲三级在线播放| 日韩亚洲Av人人夜夜澡人人爽| 亚洲国产成人乱码精品女人久久久不卡 | 久久精品国产亚洲av麻豆图片 | 老妇激情毛片免费| 亚洲国产精品无码观看久久| 亚洲第一精品电影网| 亚洲国产精品无码成人片久久|