• Java编写一个随机产生小学生四则运算题30道


    //注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0.
    package 课堂测试1;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Random;
    public class Arithmetic {
        String f()
            {
                int i=(int)(1+Math.random()*100);
                int j=(int)(1+Math.random()*100);
                if(i>=j)
                {
                    int temp=i;
                    i=j;
                    j=temp;
                }
                return("("+i+"/"+j+")");
            }//Math.random()是令系统随机选取大于等于 0.0 且小于 1.0 的伪随机 double 值
        /*
         * Java中Math类的random()方法可以生成[0,1)之间的随机浮点数。而double类型数据强制转换成int类型,整数部分赋值给int类型变量,小数点之后的小数部分将会丢失。如果要生成[0,n]的随机整数的话,只需要Math.random()乘以n+1,生成[0,n+1)的浮点数,再强制类型转换为int类型,只取其整数部分,即可得到[0,n]的整数。
    int b=(int)(Math.random()*10);//生成[0,9]之间的随机整数。
    int temp=m+(int)(Math.random()*(n+1-m)); //生成从m到n的随机整数[m,n]
         int  num = (int)(Math.random()*2+1)
    //以上代码即设置一个随机1到3(取不到3)的变量num。
         //产生一个[0,1)之间的随机数。
    Math.random():
    返回指定范围的随机数(m-n之间)的公式:
    Math.random()*(n-m)+m;
    或者
    Math.random()*(n+1-m)+m*/
       public static void main(String[] args)
            {
           try {
               File file=new File("E:\result.txt");
               if(file.exists()) {file.delete();}
           FileWriter fw=new FileWriter(file,true);
           PrintWriter pw=new PrintWriter(fw);
           //PrintWriter()的作用是为了定义流输出的位置,并且此流可以正常的存储中文,减少乱码输出。
           //备注:文件流用完之后必须及时通过close方法关闭,否则会一直处于打开状态,直至程序停止,增加系统负担。
          double result;
               String a,b;
                Arithmetic lianxi=new Arithmetic();
                for(int n=0;n<30;n++)
                {System.out.println("第"+(n+1)+"道");
                    a=lianxi.f();
                    b=lianxi.f();
                    int i=(int)(1+Math.random()*100);
                    int j=(int)(1+Math.random()*100);
                    double i1=i;
                    double j1=j;
                    String[]operator={"+","-","*","/"};
                    Random r=new Random();
                    int num=r.nextInt(4);//该方法的作用是生成一个随机的int值,该值介于[0,4)的区间,也就是0到4之间的随机int值,包含0而不包含4
             int t=(int)(Math.random()*3);//分为三种情况,两个整数运算,一个整数一个分数运算,两个分数运算
          //两个整数运算
             if(t==0) {
                if(operator[num]=="/") {
                    if(j==0) {
                        while(j==0)
                            j= (int)(Math.random()*100);
                    }
                }//考虑除数是否为0的情况,不过用在这边没有意义,这里的j不可能为0
                String str1=i+operator[num]+j;
            if(operator[num]=="+") {result=i+j;
            System.out.println(str1+"=");
            pw.println(str1+"="+result);//保存到文件中去
            }
            else if(operator[num]=="-") {
                result=i-j;
                System.out.println(str1+"=");
                pw.println(str1+"="+result);
            }
            else if(operator[num]=="*") {
                result=i*j;
                System.out.println(str1+"=");
                pw.println(str1+"="+result);
            }
            else if(operator[num]=="/") {
                result=i1/j1;
                System.out.println(str1+"=");
                pw.println(str1+"="+result);
            }
            }
             //一个整数一个分数运算
            else if(t==1) {
                if(operator[num]=="/") {
                    if(j==0) {
                        while(j==0)
                            j= (int)(Math.random()*100);
                    }
                }
                String str2=a+operator[num]+j;
                 if(operator[num]=="+") {
                System.out.println(str2+"=");
                pw.println(str2+"=");
            }
                 if(operator[num]=="-") {
                     System.out.println(str2+"=");
                     pw.println(str2+"=");
                 } 
                 if(operator[num]=="*") {
                     System.out.println(str2+"=");
                     pw.println(str2+"=");
                 }
                 if(operator[num]=="/") {
                     System.out.println(str2+"=");
                     pw.println(str2+"=");
                 }
            }
             //两个分数运算
            else if(t==2) {
                String str3=a+operator[num]+b;
            if(operator[num]=="+") {
                System.out.println(str3+"=");
                pw.println(str3+"=");
            }
                 if(operator[num]=="-") {
                     System.out.println(str3+"=");
                     pw.println(str3+"=");
                 } 
                 if(operator[num]=="*") {
                     System.out.println(str3+"=");
                     pw.println(str3+"=");
                 }
                 if(operator[num]=="/") {
                     System.out.println(str3+"=");
                     pw.println(str3+"=");
                 }
            }
                }
                pw.flush();
                pw.close();
                fw.close();
           }catch(IOException e) {
               e.printStackTrace();
           }
            }
    }
    /*参考链接
     https://blog.csdn.net/qq_36868342/article/details/73478112
     https://blog.csdn.net/qq_21808961/article/details/79931087
     https://www.cnblogs.com/xiaotiaosi/p/6394147.html
     https://zhidao.baidu.com/question/417476227.html?word=printwriter&ms=1&rid=9823837345489847717
    https://blog.csdn.net/duncandavid/article/details/60871080        
    */     
            
    
        
  • 相关阅读:
    BZOJ 4260 Codechef REBXOR
    [SHOI2008]小约翰的游戏John
    [POI2016]Nim z utrudnieniem
    [CQOI2013]棋盘游戏
    [SDOI2016]硬币游戏
    [BZOJ3083]遥远的国度
    [Luogu3727]曼哈顿计划E
    [HihoCoder1413]Rikka with String
    [CF666E]Forensic Examination
    [BZOJ4004][JLOI2015]装备购买
  • 原文地址:https://www.cnblogs.com/zzstdruan1707-4/p/9746019.html
Copyright © 2020-2023  润新知