zoukankan      html  css  js  c++  java
  • Java四则运算课堂测试三

    题目:

    1、定义主界面菜单,

    1、参数设置

    2、小学二年级口算题

    3、小学三年级口算题

    4、小学四年级口算题

    5、错题集 其中参数设置包括出题个数(缺省值为30)、操作数数值范围。 小学二年级口算题操作数为两个、可进行加减乘除运算(除法必须可以整除),操作数范围不超过100. 小学三年级口算题操作数不超过4个,可以进行加减乘除,操作数范围不超过1000. 小学四年级口算题操作数不超过5个,可以进行加减乘除,还可以加入括号运算。

    源代码:

    package yunsuan;
    
    import java.util.Scanner;
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    
    public class SiZeYunSuan3 {
        private static int correct=0;
        //获取运算符
        public static String getOp(int index) {
            String string = "";
            switch (index) {
            case 0:
                string = "+";
                break;
            case 1:
                string = "-";
                break;
            case 2:
                string = "*";
                break;
            case 3:
                string = "/";
                break;
            }
            return string;
        }
        
        //输出界面
        public static void Print() {
            System.out.println("************************");
            System.out.println("      1.参数设置                             ");
            System.out.println("      2.小学二年级口算题               ");
            System.out.println("      3.小学三年级口算题               ");
            System.out.println("      4.小学四年级口算题               ");
            System.out.println("      5.错题集                                  ");
            System.out.println("************************");
        }
        
        //参数设置
        public static void Canshu(ShuZhi sz) {
            Scanner con=new Scanner(System.in);
            System.out.print("请输入题目数量:");
            sz.N=con.nextInt();
            System.out.print("请输入操作数个数:");
            sz.n=con.nextInt();
            System.out.print("请输入最大范围:");
            sz.max=con.nextInt();
        }
        
        //生成随机数
        public static void Random(int[] number,int[] ope,ShuZhi sz) {
            for(int i=0;i<sz.N*sz.n;i++) {
                number[i]=(int)(Math.random()*sz.max+1);
            }
            for(int j=0;j<sz.N*(sz.n-1);j++) {
                ope[j]=(int)(Math.random()*4+0);
            }
        }
        
        //题目生成字符串
        public static void Into_str(String[] str,int[] number,int[] ope,ShuZhi sz) {
            int i=0,j=0;
            for(int p=0;p<sz.N;p++) {
                String s1=" ";
                for(int m=0;m<(sz.n-1);m++) {
                    s1=s1+String.valueOf(number[i])+getOp(ope[j]);
                    i++;j++;
                }
                str[p]=s1+String.valueOf(number[i]);
                System.out.println(str[p]);
            }
        }
        
        //输出题目
        public static void Output1(String[] str,ShuZhi sz,String[] mis) {
            Scanner con=new Scanner(System.in);
            int j=0;
            for(int i=0;i<sz.N;i++) {
                System.out.println("("+(i+1)+")"+str[i]+"=");
                String answer1=con.next();
                if(answer1.equals(Calculate(str[i]))) {
                    System.out.println("回答正确!");
                    correct++;
                }
                else {
                    System.out.println("回答错误!");
                    mis[j]=str[i];
                    j++;
                }
            }
            System.out.println("本次做题总数:"+sz.N+"   正确数:"+correct+"   错题数:"+(sz.N-correct)+"   正确率:"+((correct*100)/sz.N)+"%");
        }
        
        //判断是否重复
        public static int judge(String[] str,ShuZhi sz) {
            int f=1;
            for(int i=0;i<sz.N;i++) {
                for(int j=0;j<i;j++) {
                    if(str[i].equals(str[j]))f=0;
                }    
            }
            return f;
        }
        
        //计算结果函数
        public static String Calculate(String s) {
            ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
            ScriptEngine scriptEngine = scriptEngineManager.getEngineByName("nashorn");
            String n=s;
            String result="";
            try {
                   result = String.valueOf(scriptEngine.eval(n));
                   //System.out.println(result);
               } catch (ScriptException e) {
                   e.printStackTrace();
               }
            return result;
        }
        
        /*//计算题目结果
        public static void Calculate_timu(String[] str,String[] result,ShuZhi sz) {
            for(int i=0;i<sz.N;i++) {
                result[i]=Calculate(str[i]);
                System.out.println(result[i]);
            }
        }*/
        
        //错题集
        public static void Output_mis(String[] mis,ShuZhi sz) {
            Scanner con=new Scanner(System.in);
            for(int j=0;j<sz.N-correct;j++) {
                System.out.println("("+(j+1)+")"+mis[j]+"=");
                String answer2=con.next();
                if(answer2.equals(Calculate(mis[j]))) {
                    System.out.println("回答正确!");
                }
                else System.out.println("回答错误!");
            }
        }
    
        public static void main(String[] args) {
            ShuZhi sz=new ShuZhi();
            sz.n=2;
            sz.N=30;
            sz.max=100;
            SiZeYunSuan3 si=new SiZeYunSuan3();
            int f=1;
            int[] number=new int[100];
            int[] ope=new int[100];
            String[] str=new String[100];
            String[] mis=new String[100];
            Canshu(sz);
            Random(number,ope,sz); //随机生成数字
            Into_str(str,number,ope,sz); //题目生成字符串
            //f=judge(str,sz); //判断是否重复
            Output1(str,sz,mis); //输出判断正误
            System.out.println("\n错题集:");
            Output_mis(mis,sz);
        }
    
    }
  • 相关阅读:
    主效应|处理误差 |组间误差|处理效应|随机误差|组内误差|误差|效应分析|方差齐性检验|SSE|SSA|SST|MSE|MSA|F检验|关系系数|完全随机化设计|区组设计|析因分析
    第二类错误|检验统计量|左偏|右偏|P值
    估计量|估计值|置信度|置信水平|非正态的小样本|t分布|大样本抽样分布|总体方差|
    参数|统计量|抽样分布|估计标准误差|标准误差|标准误|标准差|二项分布|泊松分布|中心极限定理|样本方差|
    ruby 分析日志,提取特定记录
    find 找出大文件
    momentjs 求小时差异
    linux下对date和timestamp的互转
    golang protobuf SetExtension
    对文本中的某两列求和,请统计重复出现次数
  • 原文地址:https://www.cnblogs.com/zyljal/p/14159017.html
Copyright © 2011-2022 走看看