四则运算(文件)

源码:

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]+"\r\n");
     } 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+"\r\n");
     } 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();
    }
}

这次实验并不难,但我对文件的操作不太会,很多时间都花在搜索文件的操作上面。

猜你喜欢

转载自www.cnblogs.com/lq13035130506/p/9965461.html