• 四则运算(文件)


    源码:

    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();
        }
    }

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

  • 相关阅读:
    SCU3033 Destroying a Painting(最小费用最大流)
    HDU4859 海岸线(最小割)
    ZOJ3228 Searching the String(AC自动机)
    HUST1024 dance party(最大流)
    SGU438 The Glorious Karlutka River =)(最大流)
    SPOJ839 Optimal Marks(最小割)
    BZOJ1086 [SCOI2005]王室联邦(树分块)
    SCU3109 Space flight(最大权闭合子图)
    HDU3138 Coconuts(最小割)
    ZOJ2539 Energy Minimization(最小割)
  • 原文地址:https://www.cnblogs.com/lq13035130506/p/9965461.html
Copyright © 2020-2023  润新知