zoukankan      html  css  js  c++  java
  • java四则运算第三阶段

    题目:

    阶段3:

    1、可定制(数量):输入大的出题数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地;

    2、定制操作数的个数;

    3、定制是否有乘除法;

    4、定制是否有括号(随机加入)

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

    这个代码仍需要完善,后续会有

  • 相关阅读:
    手机app打开的web,在打开chrome浏览器
    linux环境下安装yaf
    redis在ubuntu下的安装
    验证一个值是否在多维数组中
    20个正则表达式
    nginx+memcached缓存图片
    cocos2dx加载骨骼动画,获取骨骼位置
    listview的pushBackDefaultItem中的item属性被修改问题
    lua保留n位小数方法
    cocos2dx中node的pause函数(lua)
  • 原文地址:https://www.cnblogs.com/zyljal/p/14157511.html
Copyright © 2011-2022 走看看