表示推翻以前所有的思路重新想重新写代码还真是难- -不过不重新写没有思路,是混乱的。
定义一些变量分别代表题目个数运算范围等,定义数组存储运算符和随机数组成的算式,然后生成随机数,靠之前输入的数值控制数量和范围
生成题目很简单,之前也做到了,现在要做到计算,由于优先级比较import java.uti
public class Calculate{ public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.print("请输入题目个数:"); int n=sc.nextInt(); System.out.print("请输入运算范围(最大值)"); int a=sc.nextInt(); System.out.print("请输入运算数字的个数:(不大于10)"); int b=sc.nextInt(); String []yunsuan={"+","-","*","/","="}; int []c;//随机数的存储 int j=0;//次数的控制 int g=0;//结果的累加 int h=0;//正确个数的存储 int []l;//符号的存储 System.out.print("是否有乘除法(是输入y,否输入n)"); String p=sc.next(); if(p.equals("y")){ do{ c=new int [b]; //生成数组用来存储算式中的数字 for(int i=0;i<b;i++){ c[i]=new Random().nextInt(a); //a为此前输入的随机数范围 } l=new int[b]; l[b-1]=4; for(int i=0;i<b-1;i++){ l[i]=new Random().nextInt(3); //在适当位置插入随机运算符 } for(int z=0;z<b;z++){ if(l[z]==3&&c[z+1]==0){ c[z+1]=1; } } for(int y=0;y<b;y++){ System.out.print(c[y]+yunsuan[l[y]]); } int f=sc.nextInt(); for(int z=0;z<b;z++){ if(l[z]==2){ c[z+1]=c[z]*c[z+1]; c[z]=0; l[z]=0; } } for(int z=0;z<b;z++){ if(l[z]==3){ c[z+1]=c[z]/c[z-1]; c[z]=0; l[z]=0; } } g=c[0]; for(int z=0;z<b;z++){ if(l[z]==0){ g=g+c[z+1]; } else if(l[z]==1){ g=g-c[z+1]; } } //计算结果 if(f==g){ System.out.println("正确"); } else{ System.out.println("错误,正确答案为:"+g); } j++; }while(j<n); } else if(p.equals("n")){ do{ c=new int [b]; for(int i=0;i<b;i++) { c[i]=new Random().nextInt(a); } l=new int[b]; l[b-1]=4;//等号 for(int i=0;i<b-1;i++) { l[i]=new Random().nextInt(2);//运算符号的随机 } for(int y=0;y<b;y++){ System.out.print(c[y]+yunsuan[l[y]]); } int f=sc.nextInt(); g=c[0]; for(int z=0;z<b;z++) { if(l[z]==0) { g=g+c[z+1]; } else if(l[z]==1) { g=g-c[z+1]; } } if(f==g) { System.out.println("正确"); } else { System.out.println("错误,正确答案为:"+g); } j++; }while(j<n); } else{ System.out.print("输入错误"); } } }