项目名字:结对编程(四则运算)
结对伙伴:刘芳芳、于淼
主要用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 }
本次主要了解到对于带括号的复杂运算怎么进行优先级判断,以及运算符和操作数的处理。
代码累加: