9.25
对昨天的代码进行了优化和按老师的要求进行升级,但是该代码仍有许多小bug。
代码如下:
import java.util.*;
public class random_twe {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int m=0;//错题个数
int[][] std = new int[100][4] ;
int[] std_Error = new int[100];
System.out.print("请输入想要定制的数量");
int n = input.nextInt();
System.out.print("请输入最大数的值");
int Num1 = input.nextInt();
System.out.println("请输入最小数值");
int Num2 = input.nextInt();
get_Random(std,n,Num1,Num2);
m = do_Questions(std,std_Error,n);
get_Print(std,std_Error,m+1);
}
public static void get_Random(int a[][],int N,int Num1, int Num2) {
Random r=new Random();
int num1 = r.nextInt(Num1 - Num2 + 1)+Num2;
int num2 = r.nextInt(Num1 - Num2 + 1)+Num2;
int num3 = r.nextInt(3);
a[0][0]=num1;
a[0][1]=num2;
a[0][2]=num3;
for (int i=1;i<N;i++) {
num1 = r.nextInt(Num1 - Num2 + 1)+Num2;
num2 = r.nextInt(Num1 - Num2 + 1)+Num2;
num3 = r.nextInt(3);
int flag= whether_Repeat(a,num1,num2,num3,i);
if (flag==1) {
a[i][0]=num1;
a[i][1]=num2;
a[i][2]=num3;
switch(a[i][2]) {
case 0:a[i][3]=a[i][0]+a[i][1];break;
case 1:a[i][3]=a[i][0]-a[i][1];break;
case 2:a[i][3]=a[i][0]*a[i][1];break;
case 3:a[i][3]=a[i][0]/a[i][1];a[i][4] = a[i][0]%a[i][1];break;
}
}else i--;
}
}
public static int whether_Repeat(int a[][],int num1, int num2, int num3, int N) {
int flag =0;
for(int i=1;i<=N;i++) {
flag=0;
if (num1 != a[i][0]) flag=1;
if (num2 != a[i][1]) flag=1;
if (num3 != a[i][2]) flag=1;
}
return flag;
}
public static void get_Print(int a[][],int b[],int n) {
for (int i=0;i<n;i++) {
switch(a[b[i]][2]) {
case 0:System.out.println(a[b[i]][0] + "+" + a[b[i]][1] + '=' + a[b[i]][3]);break;
case 1:System.out.println(a[b[i]][0] + "-" + a[b[i]][1] + '=' + a[b[i]][3]);break;
case 2:System.out.println(a[b[i]][0] + "*" + a[b[i]][1] + '=' + a[b[i]][3]);break;
case 3:System.out.println(a[b[i]][0] + "/" + a[b[i]][1] + '=' + a[b[i]][3] + "." + a[b[i]][4]);break;
}
}
}
public static int do_Questions(int a[][],int b[],int N ) {
Scanner sc = new Scanner(System.in);
int m=0;
for (int i=0;i<N;i++) {
int nu2=0;
switch(a[i][2]) {
case 0:System.out.println(a[i][0] + "+" + a[i][1] + '=');break;
case 1:System.out.println(a[i][0] + "-" + a[i][1] + '=');break;
case 2:System.out.println(a[i][0] + "*" + a[i][1] + '=');break;
case 3:System.out.println(a[i][0] + "/" + a[i][1] + '=');break;
}
int nu1 = sc.nextInt();
if (nu1 !=a[i][3]) {
b[nu2++] = i;
}
m=nu2;
}
return m;
}
}