• 关于我的代码在课上第一时间没有运行出来这件事


    日期:2018.11.15

    博客期:024

    星期四

      今天上课老师又出题了,这次的题目是去利用文件的读写去完成文件的读写答题!那为什么我没有第一时间做出来呢?原因我分析了以下几点:

      1、我第一时间对题意没有准确的审视,我先做出来的是直接利用文件读写同时完成!呃~简单来说就是在题目判断的同时向文件里写入内容。等发现分两步做的时候,已经过了第一时间了。

      2、我的代码库确实很鸡肋!虽然存着上一回的代码,但是我发现还需要改一些问题,那就是...文件的读写相关方法!在之前的Question类里,我就只有leftNumber和operator、rightNumber、id三个数据成员,不能实现多个数的运算!

      3、我的态度很敷衍,看到自己在第一时间快结束的时候还没有做完,心态就会感觉爆炸一样!后面做题也很难受!我觉得以后做Java软件还是需要放松一点...

      4、我对于文件的读写都是通过固定的模式来实现的,其他的方法我也没有去做更深一步的研究。看到要用BufferedReader做,自己的Scanner配套PrintWriter的模式用不上,自然做起来也就相等难受!

      5、老师说不要用web界面的时候,自己是很难受的,毕竟最近一直在学习Java web方面的知识,曾经的Java知识也没有去管,可能对Java控制台界面有点陌生了?

      原因看起来很好笑,但却是很实际的。我觉得我能从这次的练习学到很多生活、学习方法,以及改变了我的心态!所以,我还是得到很多的!

      代码:

      1 package src;
      2 
      3 import java.io.File;
      4 import java.io.IOException;
      5 import java.io.PrintWriter;
      6 
      7 public class Question {
      8     //题目号
      9     private int id;
     10     //左操作数
     11     private int leftNumber;
     12     //右操作数
     13     private int rightNumber;
     14     //操作符
     15     private char operator;
     16     //随即构造器
     17     private long temp = System.currentTimeMillis();
     18     //最大值
     19     private int MaxValue = 1000;
     20     //重设方法
     21     public void reset(){
     22         renew();
     23         int cx = (int)(temp)%4;
     24         renew();
     25         char x = '';
     26         switch(cx)
     27         {
     28         case 0:x='+';break;
     29         case 1:x='-';break;
     30         case 2:x='*';break;
     31         case 3:x='/';break;
     32         }
     33         reset(x);
     34     }
     35     public void reset(char x){
     36         leftNumber = (int)temp%MaxValue+1;
     37         renew();
     38         rightNumber = (int)temp%MaxValue+1;
     39         renew();
     40         if(x=='+')
     41         {
     42             operator='+';
     43             if(leftNumber+rightNumber>=MaxValue||rightNumber<MaxValue/MaxValue/10||leftNumber<MaxValue/100)
     44                 reset('+');
     45         }
     46         else if(x=='-')
     47         {
     48             operator='-';
     49             if(leftNumber<rightNumber||rightNumber<MaxValue/10)
     50                 reset('-');
     51         }
     52         else if(x=='*')
     53         {
     54             operator='*';
     55             if(leftNumber>MaxValue/10&&rightNumber>MaxValue/10||rightNumber==1||leftNumber==1)
     56                 reset('*');
     57         }
     58         else if(x=='/')
     59         {
     60             operator='/';
     61             if(leftNumber<rightNumber||leftNumber%rightNumber!=0||rightNumber==1)
     62                 reset('/');
     63         }
     64     }
     65     //set、get方法
     66     public int getId() {
     67         return id;
     68     }
     69     public void setId(int id) {
     70         this.id = id;
     71     }
     72     public int getLeftNumber() {
     73         return leftNumber;
     74     }
     75     public void setLeftNumber(int leftNumber) {
     76         this.leftNumber = leftNumber;
     77     }
     78     public int getRightNumber() {
     79         return rightNumber;
     80     }
     81     public void setRightNumber(int rightNumber) {
     82         this.rightNumber = rightNumber;
     83     }
     84     public char getOperator() {
     85         return operator;
     86     }
     87     public String getOperator(boolean x) {
     88         return (operator+"");
     89     }
     90     public void setOperator(char operator) {
     91         this.operator = operator;
     92     }
     93     //得到结果
     94     public int answer(){
     95         if(operator=='+')
     96             return leftNumber+rightNumber;
     97         else if(operator=='-')
     98             return leftNumber-rightNumber;
     99         else if(operator=='*')
    100             return leftNumber*rightNumber;
    101         else if(operator=='/')
    102             return leftNumber/rightNumber;
    103         else
    104             return 0;
    105     }
    106     //输出数据
    107     public void print(){
    108         System.out.print(id+"、 "+leftNumber+" "+operator+" "+rightNumber+" = ");
    109     }
    110     public void println(){
    111         System.out.println(id+"、 "+leftNumber+" "+operator+" "+rightNumber+" = ");
    112     }
    113     //输出到文件
    114     public void PrintToFile(File f) throws IOException{
    115         PrintToFile(1,f,false,false,false);
    116     }
    117     public void PrintToFile(int number,File f) throws IOException{
    118         PrintToFile(number,f,false,false,false);
    119     }
    120     public void PrintToFile(int number,File f,boolean hasID) throws IOException{
    121         PrintToFile(number,f,hasID,false,false);
    122     }
    123     public void PrintToFile(int number,File f,boolean hasID,boolean hasEquals) throws IOException{
    124         PrintToFile(number,f,hasID,hasEquals,false);
    125     }
    126     public void PrintToFile(int number,File f,boolean hasID,boolean hasEquals,boolean hasAnswer) throws IOException{
    127         if(f.exists())
    128             f.delete();
    129         f.createNewFile();
    130         PrintWriter pw = new PrintWriter(f);
    131         for(int i=1;i<=number;++i)
    132         {
    133             if(hasID)
    134                 pw.print(id+"、 ");
    135             pw.print(leftNumber+" "+operator+" "+rightNumber);
    136             if(hasEquals)
    137                 pw.print(" = ");
    138             if(hasAnswer)
    139                 pw.print(answer());
    140             pw.println();
    141         }
    142         pw.close();
    143     }
    144     //更新随机数
    145     public void renew(){
    146         temp = ((temp*16807)%Integer.MAX_VALUE);
    147     }
    148     //构造方法
    149     public Question(){
    150         id = 1;
    151         reset();
    152         try {
    153             Thread.sleep(2);
    154         } catch (InterruptedException e) {
    155             // TODO 自动生成的 catch 块
    156             e.printStackTrace();
    157         }
    158     }
    159     public Question(int ID){
    160         id = ID;
    161         reset();
    162         try {
    163             Thread.sleep(2);
    164         } catch (InterruptedException e) {
    165             // TODO 自动生成的 catch 块
    166             e.printStackTrace();
    167         }
    168     }
    169     public Question(int l,char o,int r){
    170         id = 1;
    171         leftNumber = l;
    172         operator = o;
    173         rightNumber = r;
    174     }
    175     public Question(int ID,int l,char o,int r){
    176         id = ID;
    177         leftNumber = l;
    178         operator = o;
    179         rightNumber = r;
    180     }
    181     public Question(int ID,char []operator,int length,int MaxValue){
    182         try {
    183             Thread.sleep(2);
    184         } catch (InterruptedException e) {
    185             // TODO 自动生成的 catch 块
    186             e.printStackTrace();
    187         }
    188     }
    189     //主方法
    190     public static void main(String[] args) {
    191         Question [] p = new Question [30];
    192         for(int i=0;i<30;++i)
    193         {
    194             p[i] = new Question(i+1);
    195             p[i].println();
    196         }
    197     }
    198 }
    Question.java
     1 package src;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.BufferedWriter;
     5 import java.io.File;
     6 import java.io.FileWriter;
     7 import java.io.IOException;
     8 import java.io.InputStreamReader;
     9 import java.util.Scanner;
    10 
    11 public class Test {
    12     public void test1(int Add) throws IOException
    13     {
    14         File f = new File("question/Test.txt");
    15         if(f.exists())
    16             f.delete();
    17         f.createNewFile();
    18         
    19         BufferedWriter bw = new BufferedWriter(new FileWriter(f));
    20         for(int i=1;i<=Add;++i)
    21         {
    22             Question q = new Question(i);
    23             bw.write(q.getId()+"、 "+q.getLeftNumber()+" "+q.getOperator()+" "+q.getRightNumber()+" = ");
    24             bw.newLine();
    25             bw.write(Integer.toString(q.answer()));
    26             bw.newLine();
    27             bw.write("*****************************");
    28             bw.newLine();
    29         }
    30         bw.close();
    31     }
    32     public int test2(int Add) throws IOException{
    33         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    34         Scanner sc = new Scanner(new File("question/Test.txt"));
    35         int score = 0;
    36         for(int i=1;i<=Add;++i)
    37         {
    38             Question q = new Question(i);
    39             sc.next();
    40             int leftNumber = sc.nextInt();
    41             char operator = sc.next().charAt(0);
    42             int rightNumber = sc.nextInt();
    43             q.setLeftNumber(leftNumber);
    44             q.setOperator(operator);
    45             q.setRightNumber(rightNumber);
    46             q.println();
    47             sc.nextLine();
    48             sc.nextLine();
    49             sc.nextLine();
    50             boolean temp = false;
    51             int answer = 0;
    52             while(!temp)
    53             {
    54                 String str = br.readLine();
    55                 int l = str.length();
    56                 char []c = str.toCharArray();
    57                 for(int j = 0;j<l;++j)
    58                     if(!(c[j]>='0'&&c[j]<='9'))
    59                     {
    60                         temp = false;
    61                         continue;
    62                     }
    63                 temp = true;
    64                 answer = Integer.parseInt(str);
    65             }
    66             if(answer==q.answer())
    67             {
    68                 System.out.println("结果正确!");
    69                 ++score;
    70             }
    71             else
    72             {
    73                 System.out.println("结果错误!");
    74             }
    75             System.out.println("*****************************");
    76         }
    77         return score;
    78     }
    79     public static void main(String[] args) throws IOException {
    80         int Add = 3;
    81         Test t = new Test();
    82         t.test1(Add);
    83         int score = t.test2(Add);
    84         System.out.println("您共回答了"+Add+"道题,正确"+score+"道,错误"+(Add-score)+"道");
    85     }
    86 }
    Test.java

      截图:

      

  • 相关阅读:
    git 学习
    公司领导写给新员工的信
    PLSQl远程连接oracle数据库
    hdu2222之AC自动机入门
    代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性
    ubuntu13.04安装SenchaArchitect-2.2无法启动的问题
    MVVMLight Toolkit在Windows Phone中的使用扩展之一:在ViewModel中实现导航,并传递参数
    面试题24:二叉搜索树与双向链表
    Struts2中的包的作用描述
    filter-mapping中的dispatcher使用
  • 原文地址:https://www.cnblogs.com/onepersonwholive/p/9966295.html
Copyright © 2020-2023  润新知