zoukankan      html  css  js  c++  java
  • 2020.10.17

    一、今日学习内容:

    今天对四则运算的代码金星路又一次的加工修改完善:

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

    二、遇到的问题:

        如何进行括号的随机输入不太理解。

    三:明日学习计划:

       明天开始学习如何javaweb入门。

  • 相关阅读:
    POJ 3710 Christmas Game#经典图SG博弈
    POJ 2599 A funny game#树形SG(DFS实现)
    POJ 2425 A Chess Game#树形SG
    LeetCode Array Easy 122. Best Time to Buy and Sell Stock II
    LeetCode Array Easy121. Best Time to Buy and Sell Stock
    LeetCode Array Easy 119. Pascal's Triangle II
    LeetCode Array Easy 118. Pascal's Triangle
    LeetCode Array Easy 88. Merge Sorted Array
    ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel
    ASP.NET MVC 学习笔记之面向切面编程与过滤器
  • 原文地址:https://www.cnblogs.com/marr/p/14174830.html
Copyright © 2011-2022 走看看