• 随机100道四则运算(文件储存)


      这次课堂测试要求运用文件来实现一些四则运算的答题,一共可以分为三部分:生成四则运算,添加文件操作(录入、读出)、以及判断操作。最后则是这三部分的总和。

      在这个试验中,运用Bufferedreader,BufferedWriter文件读入读取操作。以及运用subString来将读取到的一行数据进行分割开,并运用switch语句来实现不同运算的分割。在最后统计但对个数是,本来是运用引用实现技术效果,但是在实际操作中发现java对于整形引用,我并不了解事后了解到,java中没有明确的引用方式,运用的是参数的传递,在不同的类中不能直接修改该类的私有成员。如果想引用的话,需要将int,改成Integer。Integer是对象,int是基本类型。经过试验可以运行。

    源代码:

    Operations.java
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Scanner;
    
    public class Operations {
            private int a;
            private int b;
            private char c;
            //private static int time=0;
            
            //public  int getTime() {
                //return time;
            //}
            public int getA() {
                return a;
            }
            public void setA() {
                a=1+(int)(Math.random()*100);
            }
            public int getB() {
                return b;
            }
            public void setB() {
                b=1+(int)(Math.random()*100);
            }
            public int getC() {
                return c;
            }
            public void setC() {
                int i=1+(int)(Math.random()*4);
                switch(i) {
                case 4:c='+';break;
                case 1:c='-';break;
                case 2:c='*';break;
                case 3:c='/';break;
                }
            }
            Operations(){
                setA();
                setB();
                setC();
            }
            String shengcheng() {
                int k;
                String st;
                if(c=='-') {
                    if(a<b) {k=a;a=b;b=k;}
                }
                if(c=='*') {
                    b=(int)((Math.random()*9+1))+1;
                }
                if(c=='/') {
                    b=(int)((Math.random()*9+1))+1;
                    while(a%b!=0) {
                        a++;
                    }
                }
                st=a+" "+c+" "+b +" =";
                return st;
            }
            void intext(Integer time) throws IOException {
                String str;
                try {
                    BufferedReader in=new BufferedReader(new FileReader("Text.txt"));
                    while((str = in.readLine())!=null) {
                        //System.out.println(str);
                        panduan(str,time);
                    }
                    in.close();
                }
                catch (IOException e) {
                    System.out.println("缓冲区错误");
            }
            }
            void outText() throws IOException{
                try {
                    BufferedWriter out=new BufferedWriter(new FileWriter("Text.txt"));
                    for(int i=0;i<10;i++) {
                        setA();
                        setB();
                        setC();
                        out.write(shengcheng());
                        out.newLine();
                    }
                    out.flush();
                    out.close();
                }
                catch (IOException e) {
                    System.out.println("缓冲区错误");
                }
                
            }
            void panduan(String str,Integer time) {
                Scanner read=new Scanner(System.in);
                char[] ch=str.toCharArray();
                String oper;
                int get,first,second;
                int [] num;
                num=new int [3];
                for(int i=0,j=0;i<str.length();i++) {
                    if(ch[i]==' ') {num[j]=i;j++;}
                }
                first=Integer.parseInt(str.substring(0, num[0]));
                oper=str.substring(num[0]+1, num[1]);
                second=Integer.parseInt(str.substring(num[1]+1, num[2]));
                System.out.println("*********");
                System.out.println(first+" "+oper+" "+second+" =");
                System.out.print("输入答案:");
                get=read.nextInt();
                System.out.println("*********");
                switch(oper){
                case "+":{if(get==(first+second))time++;}break;
                case "-":{if(get==(first-second))time++;}break;
                case "*":{if(get==(first*second))time++;}break;
                case "/":{if(get==(first/second))time++;}break;
                }
            }
            
        }

      

    Main.java
    
    
    import java.io.IOException;
    
    public class Main {
    
        public static void main(String[] args) throws IOException {
            int time=0;
            Operations op=new Operations();
            op.outText();
            op.intext(time);
            //System.out.println("正确数量:"+op.getTime());
            //System.out.println("错误数量:"+(10-op.getTime()));
            System.out.println("正确数量:"+time);
            System.out.println("错误数量:"+(10-time));
        }
    }

      这次试验遇到的问题:对于随机数的掌握还是有一些不太熟练,以及subString(x,y);其中的x是以数组的下标来计算的,是【x,y)范围(以数组下标来实现的)。Random用法(int)1+(int)(Math.random()*100);产生的是一到一百的随机整数。

  • 相关阅读:
    springcloud将多个微服务的swagger文档整合到同一个地址访问
    git 强制回滚到某个commit版本
    常用几个 mvn 命令
    @Resource @Autowired
    我们需要深度沟通
    python 中文乱码解决方案
    同一台电脑使用多个ssh私钥配置不同的github账号
    pyinstaller 打包 sentry_sdk 出现 ModuleNotFoundError 的解决方法
    Linux系统下强制踢掉登录用户
    zsh Ctrl+U 从当前位置删除到行首
  • 原文地址:https://www.cnblogs.com/huan-ch/p/9965607.html
Copyright © 2020-2023  润新知