zoukankan      html  css  js  c++  java
  • 关于输入输出流(四则运算)

      题目要求:

      构建100以内加减乘除随机题目100道,并输出至.txt文件内,然后再从文件中输出至屏幕,做一道比对一道题的答案,敲击回车出现下一道题,最后统计正确与错误题数,打印出来。

     题目思路:

      本题有三个难点,第一,如何构建100道随机数学题;第二,如何能将构建出的题目“安全”地运送至文件中;第三,如何进行输出并比对答案,进行统计?

    (1)构建随机100以内数学题原码:

            Random rd=new Random();
            String fh[]={"+","-","*","/"};
            int num1;
            int num2;
            int h;
            static int t,f;
            
            public int getT() {
                return t;
            }
            public  void setT() {
                t++;
            }
            public int getF() {
                return f;
            }
            public void setF() {
                f++;
            }
            int number;
            static int answer;
            public int getAnswer() {
                return answer;
            }
            public void setAnswer(int answer) {
                this.answer = answer;
            }
            public int getNum1() {
                
                return num1;
            }
            public void setNum1(int num1) {
                this.num1 =num1;
            }
            public int getNum2() {
                
                return num2;
            }
            public void setNum2(int num2) {
                this.num2 =num2;
            }
            public int getH() {
                
                return h;
            }
            public void setH(int h) {
                this.h = h;
            }
            public String[] getFh() {
                return fh;
            }
            public void fuzhi()
            {
                Random rd=new Random();
                num1=1+rd.nextInt(101);
                num2=1+rd.nextInt(101);
    
                 h=rd.nextInt(4);
                setNum1(num1);
                setNum2(num2);
                setH(h);
                
                if(fh[h].equals("+"))
                {
                    if(num1+num2<=100)
                    {
                        setAnswer(num1+num2);
                    }
                    else
                    {
                        fuzhi();
                    }
                    
                }
                else if(fh[h].equals("-"))
                {
                    setAnswer(num1-num2);
                }
                else if(fh[h].equals("*"))
                {
                    if(num1*num2<=0)
                    {
                        setAnswer(num1*num2);
                    }
                    else
                    {
                        fuzhi2();
                    }
    
                }
                else if(fh[h].equals("/"))
                {
                    if(getNum1()%getNum2()==0)
                    {
                    setAnswer(num1/num2);
                    }
                    else
                    {
                        
                        fuzhi();
                    }
    
                }
                
            }
            public void fuzhi2()
            {
                Random rd=new Random();
                num1=1+rd.nextInt(11);
                num2=1+rd.nextInt(11);
                
                setNum1(num1);
                setNum2(num2);
                
                setAnswer(num1*num2);
            }

    (2)将100道题输出至文件原码:

            public void  Output{
                    PrintStream ps = null; 
                try {
                    //创建一个节点输出流:FileOutputStream
                    FileOutputStream fos = new FileOutputStream("E:\f1.txt");
                    //以PrintStream来包装FileOutputStream输出流
                    ps = new PrintStream(fos);
                    //使用PrintStream执行输出
                    for(int i=0;i<5;i++) {
                        d.fuzhi();
                        ps.println(d.getNum1()+d.getFh()[d.getH()]+d.getNum2()+"="+" 
     ");
                        array.add(d.getAnswer());
                    }
                }
                catch (IOException ioe) {
                    ioe.printStackTrace(ps);
                }finally {
                    ps.close();
                }     
            }

    (3)比对并输出正误题数

          public void Input{
                FileReader fileReader =new FileReader("E:\f1.txt");
                @SuppressWarnings("resource")
                BufferedReader bufferedReader =new BufferedReader(fileReader);
                ArrayList<String> list =new ArrayList<String>();
                String str=null;
                while((str=bufferedReader.readLine())!=null) {
                    if(str.trim().length()>2) {
                        list.add(str);
                    }
                }
                for(;m<list.size();m++) {
                    System.out.print(list.get(m));
                    int b=sc.nextInt();
                    if(b==array.get(m)) {
                        t++;
                    }
                    else {
                        f++;
                    }
                }
                System.out.println("共答对"+t+"道题");
                System.out.println("答错"+f+"道题");
         
              }
        }

    结果截图:

     感悟:

    本题难度中等,主要考验的是输入输出流的内容,但本题也耗费了我将近4个小时,累觉不爱……第三个问题是折磨我时间最长的一个问题,后来干脆用输出至ArrayList的方法来保证题目的对应,这样才完成了这道题。

  • 相关阅读:
    PL/SQL Developer连接Oracle
    Oracle 11g 监听命令
    Oracle 11g的登陆问题
    PL/SQL Developer 配置和使用
    KMP应用求两个字符串的最长公共子串
    msc pool概念
    nformix调优之执行计划取得
    lsof 与fuser
    informix onstat命令收集
    各类系统上查看占cpu最多的进程
  • 原文地址:https://www.cnblogs.com/YXSZ/p/9964869.html
Copyright © 2011-2022 走看看