源码:
package pres.liqin.size; import java.util.*; //20173522 李秦 信1705-1 class Suan1//生成计算的类 { public int x,y,c;//定义两个变量和一个符号变量 public Random random=new Random();//定义随机数 String m;//生成的计算式储存咋m里面 int fanwei; public String shengcheng(int fanwei1)//自动生成数的函数 { this.fanwei=fanwei1; c=random.nextInt(4);//生成符号 String fuhao; x=random.nextInt(fanwei);//生成100以内的自然数 y=random.nextInt(fanwei); if(c==0)//0是加法 { fuhao="+"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else if(c==1)//1是减法 { fuhao="-"; if(x>=y) { m=String.valueOf(x)+fuhao+String.valueOf(y); } else { m=String.valueOf(y)+fuhao+String.valueOf(x); } } else if(c==2) { fuhao="*"; m=String.valueOf(x)+fuhao+String.valueOf(y); } else { fuhao="/"; for(int i=0;;i++) { if(y==0) { y=random.nextInt(fanwei); } else { break; } } m=String.valueOf(x)+fuhao+String.valueOf(y); } return m; } public String shuchu()//定义输出函数 { if(c==0) { System.out.print(m+"="); return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { System.out.print(m+"="); return (String.valueOf(x-y)); } else { System.out.print(m+"="); return (String.valueOf(y-x)); } } else if(c==2) { System.out.print(m+"="); return (String.valueOf(x*y)); } else { System.out.print(m+"="); if(x%y==0) { return (String.valueOf(x/y)); } else { if(x>y) { int shang=x/y; int yushu=x-y*shang; return (String.valueOf(shang)+"‘"+String.valueOf(yushu)+"/"+String.valueOf(y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } } public int fanhuic() { return c; } public String jisuan() { if(c==0) { return (String.valueOf(x+y));//并且返回计算的结果 } else if(c==1) { if(x>=y)//将较大的数放在前面,不能出现负数 { return (String.valueOf(x-y)); } else { return (String.valueOf(y-x)); } } else if(c==2) { return (String.valueOf(x*y)); } else { if(x%y==0) { return (String.valueOf(x/y)); } else { return (String.valueOf(x)+"/"+String.valueOf(y)); } } } public int jianyan(String a[],int s)//检验是否有重复的式子,如果有返回0,没有就返回1 { int flag=1; for(int i=0;i<s;i++) { if(m.equals(a[i]))//数组a里面是生成的式子 { flag=0; break; } } return flag; } } import java.util.*; public class Shengcheng { public Random random=new Random(); public Suan1 a=new Suan1();//定义整数运算变量a public Scanner scn=new Scanner(System.in); public String shuju[]=new String[1000000];//定义储存计算式的数组 public int flag=0;//定义题目是否有重复 public int m=0; public String daan; public String daan1; int fanwei; public void caidan() { for(int i=0;;i++) { System.out.println("1 , 整数的四则计算"); System.out.println("2 , 退出"); System.out.print("请选择:"); int t=scn.nextInt(); if(t==1) { System.out.print("请选择出题的个数:"); int tishu=scn.nextInt(); String zhengque="",cuowu=""; System.out.print("请选择生成的数范围:"); fanwei=scn.nextInt(); int zhengque1=0,cuowu1=0; while(m<tishu) { shuju[m]=a.shengcheng(fanwei);//将生成的计算式储存在数组里面 flag=a.jianyan(shuju, m);//返回是否有重复 if(flag==1)//如果没有就是1 { System.out.print(m+1+". "); daan=a.shuchu();//输出式子,将答案储存在daan里面 daan1=scn.next();//用户输入答案 if(daan1.equals("break"))//用户不想做题时输入break跳出 { break; } else if(daan1.equals(daan))//检查答案是否正确 { System.out.println("回答正确!!!"); zhengque=zhengque+String.valueOf(m+1)+","; zhengque1++; } else { System.out.println("回答错误!!!正确答案是:"+daan);//如果不正确输出正确答案 cuowu=cuowu+String.valueOf(m+1)+","; cuowu1++; } m++; flag=0; } } System.out.println("正确的数量为:"+zhengque1+"正确的题目是:"+zhengque); System.out.println("错误的数量为:"+cuowu1+"错误的题目是:"+cuowu); m=0; } } } } import java.io.*; public class Jisuan { public static void main(String[] args) throws IOException { Shengcheng a=new Shengcheng(); FileWriter fw = null; try { //创建字符输出流 fw = new FileWriter("D:\test.txt"); for(int i = 0;i<a.m;i++) fw.write(a.shuju[a.m]+" "); } catch (IOException ioe) { ioe.printStackTrace(); } finally { //使用finally块来关闭文件输出流 if (fw != null) { fw.close(); } } //将答案添加到answer.text文本中 FileWriter fwas = null; try { //创建字符输出流 fwas = new FileWriter("D:\answer.txt"); for(int i = 0;i<a.m;i++) fwas.write(a.daan1+" "); } catch (IOException ioe) { ioe.printStackTrace(); } finally { //使用finally块来关闭文件输出流 if (fwas != null) { fwas.close(); } } File n=new File("D:\test.txt"); FileInputStream b = new FileInputStream(n); InputStreamReader c=new InputStreamReader(b,"UTF-8"); { BufferedReader bufr =new BufferedReader(c); String line = null; while((line = bufr.readLine())!=null){ a.shuju[a.m]=line; a.m++; } bufr.close(); } c.close(); b.close(); int h=0; String answer[]= new String[h]; File as=new File("D:\answer.txt"); FileInputStream bs = new FileInputStream(as); InputStreamReader cs=new InputStreamReader(bs,"UTF-8"); { BufferedReader bufrs =new BufferedReader(cs); String lines = null; while((lines = bufrs.readLine())!=null){ answer[h]=lines; h++; } bufrs.close(); } cs.close(); bs.close(); a.caidan(); } }
这次实验并不难,但我对文件的操作不太会,很多时间都花在搜索文件的操作上面。