标签:
代码还未完全实现,暂且发布以下内容:
1 // 2 //四则运算04 3 4 import java.util.Scanner; 5 public class Four_Operation_04 { 6 7 static Scanner in=new Scanner(System.in);//定义in为输入 8 9 public static void main(String[] args) { 10 // TODO Auto-generated method stub 11 12 System.out.print("请选择:\n1.混合运算;\n2.简单运算。\n"); 13 int k=in.nextInt(); //k:运算选择 14 System.out.print("5.请输入打印数量:"); 15 int printNUM=in.nextInt(); //printNUM:打印数量 16 System.out.print("请选择:\n计算范围:"); 17 int numF=in.nextInt(); //numF:计算范围 18 System.out.print("2.请选择是否有乘除法:\n"); 19 System.out.print("(1):是 (2):否\n"); 20 int ccYN=in.nextInt(); //ccYN:是否有乘除法 21 22 if(k==1) 23 { 24 operationComp(numF,ccYN); 25 } 26 27 if(k==2) 28 { 29 operationInt(numF,ccYN,printNUM); 30 } 31 } 32 33 //简单运算 34 public static void operationInt(int a1,int a2,int a4) 35 { //计算范围 乘除法 打印数量 36 int fir[]=new int[a4];//第一个数 37 int mid[]=new int[a4]; //符号转化的中间变量 38 char fh[]=new char[a4];//符号 39 int sec[]=new int[a4];//第二个数 40 41 int T;//控制重新生成随机数的变量 42 43 for(int i=0;i<a4;i++) 44 { 45 T=0; 46 47 //随机产生 48 fir[i]=(int)(Math.random()*a1); 49 mid[i]=(int)(Math.random()*a1); 50 if(a2==2)//没有乘除法 51 { 52 mid[i]=mid[i]%2; 53 if(mid[i]==0)fh[i]=‘+‘; 54 if(mid[i]==1)fh[i]=‘-‘; 55 } 56 if(a2==1)//有乘除法 57 { 58 mid[i]=mid[i]%4; 59 if(mid[i]==0)fh[i]=‘+‘; 60 if(mid[i]==1)fh[i]=‘-‘; 61 if(mid[i]==2)fh[i]=‘*‘; 62 if(mid[i]==3)fh[i]=‘/‘; 63 } 64 sec[i]=(int)(Math.random()*a1); 65 66 //减法不能有负数 67 if(fh[i]==‘-‘) 68 { 69 if(fir[i]-sec[i]<0) 70 T=1; 71 } 72 73 //是否重复 74 for(int j=i-1;j>=0;j--) 75 { 76 if(fh[i]==fh[j]) 77 { 78 //判断数字有无相同 79 if(fir[i]==fir[j]&&sec[i]==sec[j]) 80 T=1; 81 //加法与乘法前后数字也不能都相同 82 if(fh[i]==‘+‘||fh[i]==‘/‘) 83 { 84 if(fir[i]==sec[j]&&sec[i]==fir[j]) 85 T=1; 86 } 87 } 88 } 89 if(T==1)i--; 90 } 91 92 //打印 93 int R=0; 94 for(int m=0;m<a4;m++) 95 { 96 System.out.print(fir[m]); 97 System.out.print(fh[m]); 98 System.out.print(sec[m]); 99 System.out.print("="); 100 String r1=in.next();//用户输入答案 101 int r2=0; 102 String r3 = ""; 103 104 if(fh[m]==‘+‘) 105 { 106 r2=fir[m]+sec[m]; 107 r3=Integer.toString(r2); 108 } 109 if(fh[m]==‘-‘) 110 { 111 r2=fir[m]-sec[m]; 112 r3=Integer.toString(r2); 113 } 114 if(fh[m]==‘*‘) 115 { 116 r2=fir[m]*sec[m]; 117 r3=Integer.toString(r2); 118 } 119 if(fh[m]==‘/‘) 120 { 121 if(fir[m]%sec[m]!=0)//除法运算有余数时,真分数输出 122 { 123 //判断能否化简 124 for(int q=Math.min(fir[m],sec[m]);q>0;q--) 125 { 126 if(fir[m]%q==0&&sec[m]%q==0) 127 { 128 if(sec[m]/q==1)//当分母化简后等于1 129 r3=Integer.toString(fir[m]); 130 else 131 r3=Integer.toString(fir[m]/q)+"/"+Integer.toString(sec[m]/q); 132 } 133 } 134 135 } 136 if(fir[m]%sec[m]==0)//除法运算没有余数时 137 { 138 r2=fir[m]/sec[m]; 139 r3=Integer.toString(r2); 140 } 141 } 142 143 //判断结果与客户输入是否相同 144 if(r1.equals(r3)) 145 { 146 R++; 147 System.out.print("正确!继续加油!\n\t^-^\n"); 148 } 149 else 150 { 151 System.out.print("错误!正确答案为:"+r3+"\n"); 152 } 153 } 154 System.out.print("正确题目个数:"+R+"个。"); 155 } 156 //混合运算 157 public static void operationComp(int b1,int b2) 158 { //计算范围 乘除法 负数 159 int num[]=new int[5]; //混合运算的数字部分 160 char fuh[]=new char[4]; //混合运算的符号部分 161 int mid1; //符号中间转换变量 162 System.out.print("请输入混合运算复杂度:\n"); 163 int numope=in.nextInt(); 164 int R=0;//统计计算正确题目个数 165 for(int k=0;k<5;k++) 166 { 167 for(int j=0;j<4;j++) 168 { 169 mid1=(int)(Math.random()*100); 170 if(b2==1) //有无乘除法 171 { 172 if(mid1%4==0) 173 fuh[j]=‘+‘; 174 if(mid1%4==1) 175 fuh[j]=‘-‘; 176 if(mid1%4==2) 177 fuh[j]=‘*‘; 178 if(mid1%4==3) 179 fuh[j]=‘/‘; 180 } 181 if(b2==2) 182 { 183 if(mid1%2==0) 184 fuh[j]=‘+‘; 185 if(mid1%2==1) 186 fuh[j]=‘-‘; 187 } 188 } 189 for(int i=0;i<5;i++) 190 { 191 num[i]=(int)(Math.random()*b1); 192 if(i>0) 193 { 194 if(fuh[i-1]==‘/‘) 195 { 196 while(num[i]==0) 197 { 198 num[i]=(int)(Math.random()*b1);//除号后不能有0 199 } 200 if(num[i-1]%num[i]!=0) 201 { 202 i=i-2; 203 } 204 } 205 } 206 } 207 208 //打印 209 int N=0; 210 for(int n=0;n<numope-1;n++) 211 { 212 System.out.print(num[n]); 213 System.out.print(fuh[n]); 214 N++; 215 } 216 System.out.print(num[N]); 217 System.out.print("=\n"); 218 219 //计算 220 for(int js=0;js<numope-1;js++) 221 { 222 if(fuh[js]==‘*‘||fuh[js]==‘/‘) 223 { 224 if(fuh[js]==‘*‘) 225 num[js+1]=num[js]*num[js+1]; 226 if(fuh[js]==‘/‘) 227 num[js+1]=num[js]/num[js+1]; 228 num[js]=0; 229 if(js>0) 230 fuh[js]=fuh[js-1]; 231 if(js==0) 232 fuh[js]=‘+‘; 233 234 } 235 } 236 237 for(int js1=0;js1<numope-1;js1++) 238 { 239 if(fuh[js1]==‘+‘) 240 num[js1+1]=num[js1]+num[js1+1]; 241 if(fuh[js1]==‘-‘) 242 num[js1+1]=num[js1]-num[js1+1]; 243 } 244 245 int innum=in.nextInt(); 246 if(innum==num[numope-1]) 247 R++; 248 } 249 System.out.print("正确题目个数:"+R); 250 } 251 }
标签:
原文地址:http://www.cnblogs.com/weiyao/p/5372346.html