这一次的练习主要是将四则运算的程序进行进一步的改进和功能的添加,主要要求是:对负数以及对除法余数的控制以及对括号的要求和对取值范围的要求,我的主要思路是使用不同的随机数获得方法来获取负数和正数的随机数,余数主要是通过取余运算来获得余数,而取值范围则是通过用户的输入来判断产生的随机数是否符合,主要代码如下:
1 import java.util.*; 2 //正数的随机取值 3 class number1{ 4 private int i; 5 private int j; 6 public void seti() 7 { 8 i = 1 + (int)(Math.random() * 100); 9 } 10 public int geti() 11 { 12 return i; 13 } 14 public void setj() 15 { 16 j = 1 + (int)(Math.random() * 99); 17 } 18 public int getj() 19 { 20 return j; 21 } 22 23 } 24 //负数的随机取值 25 class Number{ 26 private int i; 27 private int j; 28 public void seti() 29 { 30 i = (-1) + (int)(Math.random() * (-100)); 31 } 32 public int geti() 33 { 34 return i; 35 } 36 public void setj() 37 { 38 j = (-1) + (int)(Math.random() * (-99)); 39 } 40 public int getj() 41 { 42 return j; 43 } 44 45 } 46 //运算符号的随机取值 47 class symbol{ 48 private int a; 49 public void seta() 50 { 51 a = 1 + (int)(Math.random() * 4); 52 } 53 public int geta() 54 { 55 return a; 56 } 57 } 58 //分数的随机取值 59 class number2{ 60 private int i; 61 private int j; 62 private int x; 63 private int y; 64 public void setnumber() 65 { 66 i = 1 + (int)(Math.random() * 100); 67 j = 1 + (int)(Math.random() * 99); 68 x = 1 + (int)(Math.random() * 100); 69 y = 1 + (int)(Math.random() * 99); 70 } 71 public int getnumberi() 72 { 73 return i; 74 } 75 public int getnumberj() 76 { 77 return j; 78 } 79 public int getnumberx() 80 { 81 return x; 82 } 83 public int getnumbery() 84 { 85 return y; 86 } 87 88 89 } 90 public class calculate { 91 public static void main(String args[]) 92 { 93 menu(); 94 System.out.println("请输入想要运行的计算"); 95 Scanner scan = new Scanner(System.in); 96 int p; 97 p = scan.nextInt(); 98 if(p == 1) 99 { 100 for(int i = 0 ; i <= 29 ; i ++){ 101 number1 n1 = new number1(); 102 int a1 , a2; 103 n1.seti(); 104 a1 = n1.geti(); 105 n1.setj(); 106 a2 = n1.getj(); 107 symbol s = new symbol(); 108 int b; 109 s.seta(); 110 b = s.geta(); 111 if(b == 1) 112 System.out.println(a1 + "+" + a2 + "=" + ( a1 + a2 ) ); 113 if(b == 2) 114 System.out.println(a1 + "-" + a2 + "=" + (a1 - a2)); 115 if(b == 3) 116 System.out.println(a1 + "*" + a2 + "=" + (a1 * a2)); 117 if(b == 4){ 118 int c = a1 % a2; 119 int c1 = (a1 - c) / a2; 120 System.out.println(a1 + "/" + a2 + "=" + c1 + "余" + c); 121 } 122 123 } 124 } 125 if(p == 2){ 126 for(int i = 0 ; i <= 29 ; i ++){ 127 Number n1 = new Number(); 128 int a1 , a2; 129 n1.seti(); 130 a1 = n1.geti(); 131 n1.setj(); 132 a2 = n1.getj(); 133 symbol s = new symbol(); 134 int b; 135 s.seta(); 136 b = s.geta(); 137 if(b == 1) 138 System.out.println(a1 + "+" + "(" +a2 + ")" + "=" + ( a1 + a2 ) ); 139 if(b == 2) 140 System.out.println(a1 + "-" + "(" +a2 + ")" + "=" + (a1 - a2)); 141 if(b == 3) 142 System.out.println(a1 + "*" + "(" +a2 + ")" + "=" + (a1 * a2)); 143 if(b == 4){ 144 int c = ((-1) * a1) % ((-1) * a2); 145 int c1 = ((-1) * a1 - c) / ((-1) * a2); 146 System.out.println(a1 + "/" + "(" +a2 + ")" + "=" + c1 + "余" + c); 147 } 148 149 150 } 151 } 152 if(p == 3) 153 { 154 for(int i = 0 ; i <= 29 ; i++) 155 { 156 number2 n2 = new number2(); 157 int b1 , b2 , b3 , b4; 158 n2.setnumber(); 159 b1 = n2.getnumberi(); 160 b2 = n2.getnumberj(); 161 b3 = n2.getnumberx(); 162 b4 = n2.getnumbery(); 163 symbol s1 = new symbol(); 164 int c; 165 s1.seta(); 166 c = s1.geta(); 167 if(c == 1) 168 System.out.println(simplify(b2 , b1) + "+" + simplify(b4 , b3) + "=" + simplify(b2 * b3 + b4 * b1 , b1 * b3)); 169 if(c == 2) 170 System.out.println(simplify(b2 , b1) + "-" + simplify(b4 , b3) + "=" + simplify(b2 * b3 - b4 * b1 , b1 * b3)); 171 if(c == 3) 172 System.out.println(simplify(b2 , b1) + "*" + simplify(b4 , b3) + "=" + simplify(b2 * b4 , b1 * b3)); 173 if(c == 4) 174 System.out.println(simplify(b2 , b1) + "/" + simplify(b4 , b3) + "=" + simplify(b2 * b3 , b1 * b4)); 175 } 176 } 177 if(p == 4) 178 { 179 int i = 0; 180 while(i < 30){ 181 number1 n = new number1(); 182 int a1 , a2; 183 n.seti(); 184 a1 = n.geti(); 185 n.setj(); 186 a2 = n.getj(); 187 if(a1 % a2 == 0) 188 { 189 i++; 190 System.out.println(a1 + "/" + a2 + "=" + (a1 / a2)); 191 } 192 } 193 } 194 if(p == 5) 195 { 196 int i = 0; 197 while(i < 30){ 198 number1 n = new number1(); 199 int a1 , a2; 200 n.seti(); 201 a1 = n.geti(); 202 n.setj(); 203 a2 = n.getj(); 204 if(a1 % a2 != 0) 205 { 206 i++; 207 int c = a1 % a2; 208 int c1 = (a1 - c) / a2; 209 System.out.println(a1 + "/" + a2 + "=" + c1 + "余" + c); 210 } 211 } 212 } 213 if(p == 6) 214 { 215 System.out.println("请输入范围的左边界:"); 216 Scanner scan1 = new Scanner(System.in); 217 int a3; 218 a3 = scan1.nextInt(); 219 System.out.println("请输入范围的右边界:"); 220 Scanner scan2 = new Scanner(System.in); 221 int a4; 222 a4 = scan1.nextInt(); 223 int i = 0; 224 while(i < 30){ 225 number1 n1 = new number1(); 226 int a1 , a2; 227 n1.seti(); 228 a1 = n1.geti(); 229 n1.setj(); 230 a2 = n1.getj(); 231 symbol s = new symbol(); 232 int b; 233 s.seta(); 234 b = s.geta(); 235 if(a1 >= a3 && a1 <= a4 && a2 >= a3 && a2 <= a4) 236 { 237 i++; 238 if(b == 1) 239 System.out.println(a1 + "+" + a2 + "=" + ( a1 + a2 ) ); 240 if(b == 2) 241 System.out.println(a1 + "-" + a2 + "=" + (a1 - a2)); 242 if(b == 3) 243 System.out.println(a1 + "*" + a2 + "=" + (a1 * a2)); 244 if(b == 4){ 245 int c = a1 % a2; 246 int c1 = (a1 - c) / a2; 247 System.out.println(a1 + "/" + a2 + "=" + c1 + "余" + c); 248 } 249 } 250 } 251 } 252 if(p == 7) 253 { 254 255 } 256 257 258 } 259 public static String simplify(int a,int b) //获得最简分数 260 { 261 int max = 0; 262 for(int i = 0 ;i < 100 ;i ++) 263 { 264 int n = i + 1 ; 265 if(a % n == 0 && b % n == 0) 266 max = n; 267 268 } 269 return (String)( a / max + "/" + b / max); 270 } 271 public static void menu() 272 { 273 System.out.println("1. 正数的四则运算"); 274 System.out.println("2. 负数的四则运算"); 275 System.out.println("3. 分数的四则运算"); 276 System.out.println("4. 整除运算"); 277 System.out.println("5. 非整除运算"); 278 System.out.println("6. 规定数值范围的运算"); 279 } 280 281 }
运行截图如下:
总结:经过这次的编程,主要体会到了作为一名软件工程师,代码是最为次要的,需要不停的根据用户的需求来对自己的软件进行修改和增加功能。因此自己编写的代码必须要有关键部位的注释,同时还要充分考虑用户的需求。
一周项目总结:
时间记录日志:
缺陷记录日志: