zoukankan      html  css  js  c++  java
  • 四则运算课堂检测

            这周四,又进行了一次课堂检验。测试的题目是曾经编写过的题目四则运算。在以前的基础上增加了文件导入和统计分数。虽然只是增加了两个功能,却让我懵了很久。

           一直在想该如何快捷的写出整个程序,将算式输出,获取用户输入数据和真实结果比较,如果相同正确加一,如果不同错误加一并记下题目,最后导入到txt文件中就可以了。想法很简单,但做起来的时候遇到了很多问题。因为马虎大意出现了很多细节错误,没有类型转换,数据没有初始化等等。越来越慌越来越乱,越来越没有头绪,无从下手。近似发呆的一直坐在找寻网上大牛是如何思考编程,收效甚微。最后老师让好几个提前做完的同学上台展示,才恍然大悟,是自己想的太笼统,没有细化这个题目,可以用一个一个模块分别计算最后总和就好了。慢慢的才有了更加简洁正确的思路,最后编出了程序。程序虽然多了很多行,但它分成了一个一个模块,在分模块测试的时候也特别方便。编写这些子程序很轻松就可以出来,调试正确后组合,再调试,最后成品就出现了。

           想来想去,这次耽误很多时间是因为没有思绪,没有思绪是因为没有分模块思考。总是想一次性写下来,可明显自己实力还没有那么强,编写过程中的错误防不胜防。还好最后在同学的展示下慢慢的调整了过来,完成了题目。

    题目如下:

    package 四则运算;
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Random;
    import java.util.Scanner;
    
    public class Jisuan{
        
        //随机生成100道题目
        public void scanf() throws IOException {
            String str[]=new String[100];
            String answer[]= new String[100];
            int n = 0;
            int x,y,m,mm;
            Random random = new Random(System.currentTimeMillis());
            String ch[] = new String[] {"-","+","/","*"};
            
            for(int i = 1;i<=100;i++) {
            
                     x = random.nextInt(100)+1;
                     y = random.nextInt(100)+1;
                     m = random.nextInt(20);
                     mm = random.nextInt(4);
                     if(ch[mm]=="*"){
                        str[n]=  x+"*"+y+"=";
                        answer[n]=x*y+"";}
                      if(ch[mm]=="/"){
                        str[n]=  x*m+ch[mm]+x+"=";
                        answer[n]=m+"";
                      }
                      if(ch[mm]=="+"){
                         str[n] = x+"+"+y+"=";
                         answer[n]=x+y+"";
                      }
                      if(ch[mm]=="-")
                      {
                          if(x>y)
                             str[n]= x+"-"+y+"=";
                          else 
                              str[n]= y+"-"+x+"=";
                          answer[n]=Math.abs(x-y)+"";
                      }
                      n++;
            }
            //将题目输入test.txt文本中
             FileWriter fw = null;
                try {
                    //创建字符输出流
                    fw = new FileWriter("test.txt");
                    for(int i = 0;i<100;i++)
                    fw.write(str[i]+"
    ");
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                } finally {
                    //使用finally块来关闭文件输出流
                    if (fw != null) {
                        fw.close();
                    }
                }
              //将答案添加到answer.text文本中
                FileWriter fwas = null;
                try {
                    //创建字符输出流
                    fwas = new FileWriter("answer.txt");
                    for(int i = 0;i<100;i++)
                    fwas.write(answer[i]+"
    ");
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                } finally {
                    //使用finally块来关闭文件输出流
                    if (fwas != null) {
                        fwas.close();
                    }
                }
            }
        
        public void print()  throws IOException {
            //输出题目进入控制台
            String str[]= new String[100];
            int n =0;
            File a=new File("test.txt");
               FileInputStream b = new FileInputStream(a);
               InputStreamReader c=new InputStreamReader(b,"UTF-8");
               {
                BufferedReader bufr =new BufferedReader(c);
                String line = null;
                while((line = bufr.readLine())!=null){
                str[n]=line;
                n++;
                }
                bufr.close();            
               }
               c.close();
               b.close();
               //把答案放进字符串数组中
               String answer[]= new String[100];
                 n =0;
                File as=new File("answer.txt");
                   FileInputStream bs = new FileInputStream(as);
                   InputStreamReader cs=new InputStreamReader(bs,"UTF-8");
                   {
                    BufferedReader bufrs =new BufferedReader(cs);
                    String lines = null;
                    while((lines = bufrs.readLine())!=null){
                        answer[n]=lines;
                    n++;
                    }
                    bufrs.close();            
                   }
                   cs.close();
                   bs.close();
            
                   Scanner cin = new Scanner(System.in);
                   int score =0;
                   for(int i=0;i<=100;i++) {
                       String Answer;
                       System.out.println(str[i]);
                       Answer = cin.nextLine();
                       if(Answer.equals("*")) {
                           System.out.println("您一共做了"+i+"道题");
                           System.out.println("您做错"+(i-score)+"题");
                           System.out.println("您做对"+score+"题");
                           System.exit(0);
                       }
                       else {
                           if(Answer.equals(answer[i]))
                               score++;
                       }
                   }
        }
        public static void main(String[] args) throws IOException {
            Jisuan a = new Jisuan();
            a.scanf();
            a.print();
        }
    }
  • 相关阅读:
    对于石家庄铁道大学软件个人总结
    Android Studio安装
    典型用户模板和用户场景模板
    java+jsp+sql server实现网页版四则运算.
    四则运算一
    学习进度
    构建之法阅读笔记(一)
    记账本小程序7天开发记录(第一天)
    javabean+jsp+servlet+jdbc从软件安装到开发实例
    编写一个文件分割工具,能把一个大文件分割成多个小的文件。并且能再次把它们合并起来得到完整的文件。
  • 原文地址:https://www.cnblogs.com/Excusezuo/p/9964435.html
Copyright © 2011-2022 走看看