进一步完善结对编程(四则运算)

项目名字:结对编程(四则运算)
结对伙伴:刘芳芳、于淼
主要用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 }

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

代码累加:

原文地址:https://www.cnblogs.com/lffang/p/6069481.html