日期: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 = '\0';
 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

  截图:

  

转载于:https://www.cnblogs.com/onepersonwholive/p/9966295.html

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

  1. 电脑显示没有被指定在上运行_游戏编年史:这也许是世界上第一款可运行的电脑游戏...

    喜剧演员丹尼·凯(Danny Kaye)玩<Bertie the Brain>胜利的照片 介绍 <Bertie the Brain>是目前已知最早期可运行的电脑游戏,由约瑟夫· ...

  2. 历史上,到底有没有狸猫换太子这件事?

    历史上,到底有没有狸猫换太子这件事? 狸猫换太子是一个民间传说,主要流传于中国南方地区,相信它的人认为在历史上曾经有一只狸猫冒充了唐朝的太子李建成,欺骗了唐太宗,最终导致李建成被杀害.但是,这个传说的 ...

  3. 写了 15 年代码,总结出提升 10 倍效率的三件事

    [译者注]本文作者 Matt Watson 已经写了超过 15 年的代码,也由此总结出了提升 10 倍效率的三件事.Matt 表示,一个 10 倍效率的开发人员很快就知道了他们需要做什么,要问什么问题 ...

  4. 炒股从负债百万,到“睡后收入”上百万,我做了这件事!

    问你一个很残酷的问题:你炒股到现在,赚钱了吗? 因为股市里永远存在着"7亏2平1赢"的规律. 如果你想要在市场里保持持续的盈利状态,你就得成为其中的"1",而不 ...

  5. mac 语音召唤siri_在Mac上使用Siri可以做的11件事

    mac 语音召唤siri As time goes on, Apple continues to work Siri into more of its products. Its sole domai ...

  6. 上大学后才知道的14件事!!!

    上了大学才知道.玩游戏是要通宵的!! 上了大学才知道.手机是用来追女生的!! 上了大学才知道.人渣都是大学培养的!! 上了大学才知道.原来大学和养老院是差不多的!! 上了大学才知道.馒头一捏就能变汤圆 ...

  7. 上大学后才知道的14件事

    上了大学才知道.玩游戏是要通宵的!! 上了大学才知道.手机是用来追女生的!! 上了大学才知道.人渣都是大学培养的!! 上了大学才知道.原来大学和养老院是差不多的!! 上了大学才知道.馒头一捏就能变汤圆 ...

  8. 关于uniapp小程序压缩视频后上传云点播视频损坏这件事

    问题起因 公司自研项目 技术栈是 uniapp 开发微信小程序 小程序内有个需要用户录制视频并上传的功能 项目内使用的是 uni.createCameraContext 相机组件进行录制视频的 一开始 ...

  9. 中国在足球上不敌德国 但在这件事上却完全可以嘚瑟

    继去年杭州成功举办了G20之后,德国汉堡接任成为下一个举办地,并即将在近期召开峰会!而作为接连举办G20的两个国家,德国和中国自然少不了要被比较一番.要是比较的对象是经济.文化这些,有着全球第二大经济 ...

最新文章

  1. avplayer VS2008编译
  2. Windows魔法堂:解决“由于启动计算机时出现页面文件配置问题.......”
  3. 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
  4. HihoCoder 1671 DFS
  5. Multi-tenant or multi-instance?
  6. html三个div相同高度,两个并列div高度相同的问题_html/css_WEB-ITnose
  7. 手机老显示存储空间不足该咋办?可删除哪些内容来增加存储空间?
  8. EFCore对数据库增删改查
  9. flashgot免费下载音乐
  10. Chrome扩展、装逼神器:Vimium
  11. 通过pytorch建立神经网络模型 分析遗传基因数据
  12. Python3基础语法(三)
  13. 【MATLAB】数字图像处理--图像的频域处理-相位谱重构
  14. arange和range
  15. html5 微信获取当前位置,「微信小程序」实现获取当前位置并在地图上显示
  16. Excel 制作散点图并添加趋势线
  17. oracle查看多少表,oracle查看所有表及各表行数?
  18. 登山鞋选对了才穿得舒服
  19. VB控件数组之操作技巧
  20. Kotlin设计模式实现之策略模式

热门文章

  1. 背景图片自适应,不重复
  2. MSP430F5529 DriverLib 库函数学习笔记(七)定时器B
  3. Javascript this关键字 指向详解
  4. Linux常用错误码--errno-base.h
  5. VB2005.Net 环境下使用Jmail组件发送邮件
  6. Libusb开发教程一 安装
  7. autoconf.mk详析
  8. [jQuery] jQuery是如何链式调用的?
  9. 工作332:uni-uview上传获取到对应数据
  10. 前端学习(2561):页面更新