zoukankan      html  css  js  c++  java
  • 进一步完善结对编程(四则运算)

    项目名字:结对编程(四则运算)
    结对伙伴:刘芳芳、于淼
    主要用java实现编码
    内容:给小学生出题的四则运算

    本次主要完善可以对带括号的复杂四则运算进行处理计算。



    四则运算PSP
    类别 开始时间 结束时间 间隔时间 累计净时间
    查找资料 12:33 13:14 0 41分
    编码 12:50 13:45 0 55分
    发布随笔 13:10 14:25 20分 55分
     

     

     

     

     

    下面我是借鉴别人的代码了解到关于四则运算中,运算符优先级,以及括号的处理。

     1 public Vector<String> getExpression(String str)
     2 {
     3     Vector<String> v_temp = new Vector<String>();
     4     char[] temp = new char[str.length()];
     5     str.getChars(0,str.length(),temp,0);
     6     String fi = "";
     7     int x=0,i=0;
     8     String regex_fig = "[\.\d]"; //匹配数字和小数点
     9     String regex_operator = "[\ \-\*/\(\)]"; //匹配运算符( ,-,*,/)和括号("(",")")
    10     Pattern p_fig = Pattern.compile(regex_fig);
    11     Pattern p_operator = Pattern.compile(regex_operator);
    12     Matcher m = null; 
    13     boolean b;
    14     while (i<str.length())
    15     {
    16         Character c = new Character(temp[i]);
    17         String s = c.toString();
    18         //System.out.println("char c = " s);
    19         m = p_operator.matcher(s);
    20         b = m.matches();
    21         if (b)
    22         {
    23             //System.out.println("matches operator");
    24             v_temp.add(fi);
    25             fi="";
    26             v_temp.add(s);
    27         }
    28             m = p_fig.matcher(s);
    29             b = m.matches();
    30             if (b)
    31             {
    32                 //System.out.println("matches fig");
    33                 fi=fi s;
    34             }
    35                 i ;
    36     }
    37     v_temp.add(fi);
    38     return v_temp;
    39     }

    下面是关于括号匹配检测:

     1 public boolean checkBracket(String str)
     2 {
     3     Stack<Character> s_check = new Stack<Character>();
     4     boolean b_flag = true;
     5     for (int i=0;i<str.length();i )
     6     {
     7         char ch = str.charAt(i);
     8         switch(ch)
     9     {
    10     case '(':
    11     s_check.push(ch);
    12     break;
    13     case ')':
    14     if (!s_check.isEmpty())
    15     {
    16         char chx = s_check.pop();
    17         if (ch==')' && chx!='(')
    18         {
    19             b_flag = false;
    20         }
    21     } 
    22     else 
    23     {
    24         b_flag = false;
    25     }
    26     break;
    27     default:
    28     break;
    29 }

    本次主要了解到对于带括号的复杂运算怎么进行优先级判断,以及运算符和操作数的处理。

    代码累加:

  • 相关阅读:
    USB描述符(转)
    (转)Linux设备驱动之HID驱动 源码分析
    Linux USB 鼠标驱动程序详解(转)
    (转)linux如何获取鼠标相对位置信息
    从零写一个编译器(四):语法分析之构造有限状态自动机
    从零写一个编译器(三):语法分析之几个基础数据结构
    从零写一个编译器(二):语法分析之前置知识
    从零写一个编译器(一):输入系统和词法分析
    自底向上语法分析
    递归下降和LL(1)语法分析
  • 原文地址:https://www.cnblogs.com/lffang/p/6069481.html
Copyright © 2011-2022 走看看