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

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

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

代码累加: