设计思想;

1、setNumberMount(int s)函数设置算式中数字的个数  若输入的数字个数小于2 ,则重新输入此值。

2、setOperatorMount(int ss)函数设置算式中运算符的个数

3、setOperator()函数将随机数转化为运算符

4、setValue()利用随机数给算式中的数字和字符赋值 分别储存在number 和 operator数组中

5、setNewArray()函数将两个数组赋值给另一个新的数组nArray。将两个数组交替赋值  如:2*3+5=

6、calculate()函数进行计算。首先将nArray数组赋值给tArray数组。先判断nArray数组里面是否有乘除。若nArray[i]处有,则计算nArray[i-1]乘或除nArray[i+1],然后将计算的值赋值给nArray[i-1],然后将后面的值依次赋值到前面。最后将nArray赋值给tArray数组。乘除运算完成后,同理进行加减运算。将tArray数组赋值给cArray数组,租后得到最终的计算结果。

7、userInput()函数让用户进行结果的输入。

8、 resultCompare()函数判断用户输入的结果是否正确。若正确,则输出you are right  若错误,则输出you are wrong 。

9、show()函数输出题目。

10、括号功能未完成。

源代码:

  1 import java.util.Scanner;
  2 public class Text3_2 {
  3 
  4     public static void main(String[] args) {
  5         // TODO Auto-generated method stub
  6         Scanner n = new Scanner(System.in);
  7         int nn=0;
  8         while (nn<2)
  9         {
 10             System.out.println("Please input number mount >= 2");
 11             nn = n.nextInt();
 12         }
 13         
 14         CalculateThree c = new CalculateThree();
 15         c.setNumberMount(nn);
 16         c.setOperatorMount(nn-1);
 17         c.setValue();
 18         //c.setString();
 19         c.setNewArray();
 20         c.show();
 21         c.userInput();
 22         c.calculate();        
 23         c.resultCompare();
 24     }
 25 
 26 }
 27 class CalculateThree
 28 {
 29     int number[];//储存数字
 30     char operator[];//储存运算符
 31     char operatorT;
 32     int nMount;//数字数量
 33     int oMount;//运算符数量
 34     int oRandom;
 35     int inputN[];
 36     int resultN;
 37     int realResult;
 38     //String addS="";
 39     //char nNumber[];
 40     String nArray[];//number和operator数组的和
 41     String tArray[];//nArray数组的改变
 42     String cArray[];//tArray数组的改变
 43     void setNumberMount(int s)//设置算式中数字的个数
 44     {
 45         nMount = s;
 46     }
 47     void setOperatorMount(int ss)//设置算式中运算符的个数
 48     {
 49         oMount = ss;
 50     }
 51     void setOperator()//运算符的转化
 52     {
 53         
 54         oRandom = (int)(Math.random()*100);
 55         if(oRandom%4==0)
 56         {
 57             operatorT = '+';
 58         }
 59         else if(oRandom%4==1)
 60         {
 61             operatorT = '-';
 62         }
 63         else if(oRandom%4==2)
 64         {
 65             operatorT = '*';
 66         }
 67         else if(oRandom%4==3)
 68         {
 69             operatorT ='/';
 70         }
 71     }
 72     void setValue()//给数字和运算符随机赋值
 73     {
 74         int i;
 75         number = new int [nMount];
 76         operator = new char [nMount];
 77         for(i=0;i<nMount;i++)
 78         {
 79             number[i] = (int)(Math.random()*100);
 80         }
 81         for(i=0;i<oMount;i++)
 82         {
 83             setOperator();
 84             operator[i] = operatorT;
 85         }
 86         operator[nMount-1] = '=';
 87     }
 88     void setNewArray()//将两个数组赋值给另一个新的数组
 89     {
 90         int i,jj=0;
 91         nArray = new String [2*nMount];
 92         for( i=0;i<nMount*2;i=i+2)
 93         {
 94             if(i+1==nMount*2-1)
 95                 nArray[2*nMount-1] = String.valueOf(operator[nMount-1]);
 96             for(int j=jj;j<nMount;j++)
 97             {
 98                 nArray[i]=String.valueOf(number[j]);
 99                 nArray[i+1]=String.valueOf(operator[j]);    
100                 break;
101             }
102             jj=jj+1;
103         }
104     }
105     
106     void calculate()//进行计算
107     {
108         int i,j,k=0;
109         tArray = new String [2*nMount-2*k];
110         
111         //先将nArray数组值赋入tArray
112         for(i=0;i<2*nMount-2*k;i++)
113         {
114             tArray[i]=nArray[i];
115         }
116         
117         for(i=0;i<2*nMount;i++)
118         {
119             //先将算式中的乘除算完
120             if(nArray[i]=="*"||nArray[i]=="/")
121             {
122                 System.out.println("hahaha1");
123                 if(nArray[i]=="*")
124                 {
125                     System.out.println("hahaha2");
126                     int num1=Integer.parseInt(nArray[i-1]);
127                     int num2=Integer.parseInt(nArray[i+1]);
128                     int num = num1*num2;
129                     nArray[i-1]=String.valueOf(num);
130                     for(j=i;j<2*nMount-2;j++)
131                     {
132                         nArray[j]=nArray[j+2];
133                     }
134 
135                     k++;//确定得到新的数组的长度
136                     //tArray = new String [2*nMount-2*k];
137                     for(i=0;i<2*nMount-2*k;i++)//得到新的数组tArray 
138                     {
139                         tArray[i]=nArray[i];
140                     }
141 
142                 }
143                 else if(nArray[i]=="/")
144                 {
145                     System.out.println("hahaha3");
146                     int num1=Integer.parseInt(nArray[i-1]);
147                     int num2=Integer.parseInt(nArray[i+1]);
148                     int num = num1/num2;
149                     nArray[i-1]=String.valueOf(num);
150                     for(j=i;j<2*nMount-2;j++)
151                     {
152                         nArray[j]=nArray[j+2];
153                     }
154                     k++;//确定得到新的数组的长度                        
155                     for(i=0;i<2*nMount-2*k;i++)//得到新的数组tArray 
156                     {
157                         tArray[i]=nArray[i];
158                     }
159                 }
160             }    
161         }
162 
163         
164         //再将算式中的加减算完                
165             int p=1,z=0;            
166             while(p==1)
167             {
168                 cArray = new String [2*nMount-2*k];
169                 for(i=0;i<2*nMount-2*k;i++)
170                 {
171                     if(tArray[i]=="+"||tArray[i]=="-")
172                     {
173                         System.out.println("hahaha4");
174                         if(tArray[i]=="+")
175                         {
176                             System.out.println("hahaha5");
177                             int num3 = Integer.parseInt(tArray[i-1]);
178                             int num4 = Integer.parseInt(tArray[i+1]);
179                             int num = num3+num4;
180                             tArray[i+1]=String.valueOf(num);
181                             for(j=i;j<2*nMount-2*k;j++)
182                             {
183                                 tArray[j]=tArray[j+2];
184                             }
185                             z++;//确定得到的新的数组的长度
186                             for(i=0;i<nMount*2-2*k-2*z;i++)//得到新的数组cArray
187                             {
188                                 cArray[i]=tArray[i];
189                             }
190                         }
191                         else if(tArray[i]=="-")
192                         {
193                             System.out.println("hahaha6");
194                             int num3 = Integer.parseInt(tArray[i-1]);
195                             int num4 = Integer.parseInt(tArray[i+1]);
196                             int num = num3-num4;
197                             tArray[i+1]=String.valueOf(num);
198                             for(j=i;j<2*nMount-2*k;j++)
199                             {
200                                 tArray[j]=tArray[j+2];
201                             }
202                             z++;//确定得到的新的数组的长度
203                             for(i=0;i<nMount*2-2*k-2*z;i++)//得到新的数组cArray
204                             {
205                                 cArray[i]=tArray[i];
206                             }
207                         }
208                     }
209                 }
210                 for(i=0;i<2*nMount-2*k-2*z;i++)
211                 {
212                     if(cArray[i]!="+"&&cArray[i]!="-"&&cArray[i]!="*"&&cArray[i]!="/")
213                         p=2;
214                 }
215             
216             }
217             realResult = Integer.parseInt(cArray[2*nMount-2*k-2*z-2]);
218     }
219 
220     void userInput()
221     {
222         System.out.println("Please input your result");
223         Scanner r = new Scanner(System.in);
224         resultN = r.nextInt();
225         
226     }
227     void resultCompare()
228     {
229         if(resultN==realResult)
230         {
231             System.out.println("You are right");
232         }
233         else 
234             System.out.println("You are wrong");
235     }
236     void show()
237     {
238 
239         for(int i=0;i<nMount*2;i++)
240         {
241             System.out.print(nArray[i]);
242         }
243         System.out.println("\n"+"\n");
244     }
245 }

截图:

 

分析:

学习了通过断点判断程序运行的问题出处,(但是仍未解决)。栈的使用。

学会了字符串字符数组的应用等。

时间记录日志:

日期 开始时间 结束时间 中断时间 净时间 活动 备注 c u
3.21 8:00 9.50 10 100 上课 课间休息    
  4:00 5:00   60 阅读      
3.22 9:00 10:00   60 阅读      
3.25 7:30 9:30 30 90 编程 休息 查资料    
3.26 9:30 11:30 20 100 编程 查资料    
  3:00 5:00 10 80 编程      
   6:00  7:30    90  编程      
                 

缺陷记录日志:

日期 编号 引入阶段 排除阶段 修复时间 修复缺陷
3.25 1 编码 编译 1min  
描述:数组的赋值有误
  2 编码 编码 1min  
描述:字符串数组 与字符数组
  3 编码 编译 未知  

                                                 描述:经过断点判断程序中if条件未运行 还未解决

 

项目计划总结:

任务

日期

听课 编程 阅读课本   日总计
周一3.21 100   60   160
3.22     60   60
3.25   90     90
3.26   270     270
           
           
           
周总计 100 360 120    

阶段时间和效率

总计 580        
平均 82.5        
最大 270        
最小 60        

学习合作图;