设计思想;
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 |
学习合作图;