热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

结对作业四则运算

一、我们这次的代码是在Eclipse的环境下写的二、做的四个方向分别为:1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如:2*(-4)
 一、我们这次的代码是在Eclipse的环境下写的

二、做的四个方向分别为:

1.可以出表达式里含有负整数(负整数最小不小于-100)的题目,且负数需要带括号,用户输入的结果不用带括号。如: 2*(-4) = -8

2.用户答题结束以后,程序可以显示用户答题所用的时间

3.用户可以选择出题的个数(最多不能超过5个题目),答题结束可以显示用户答错的题目个数和答对的题目个数

4.程序可以出单个整数阶乘的题目:如:4!=24

 

三、我的结伴队友是52林惠映 博客地址:http://www.cnblogs.com/LHYwin/ 


 

四、在这个结对任务中,我是负责编写1,4,林惠映负责编写2,3,还有写注释。程序的整体部分是我们两个共同完成的。

 

五、过程中我们遇到要解决的主要问题:

1、处理除法运算时要考虑除数不能为0的情况;
2、设置了按钮要处理按钮监听事件;
3、除法运算中要处理除不尽的情况,将结果设置为保留小数点后两位;
4、判读第一个操作数与第二个操作数是否为负数并加括号时要分四种情况;
5、处理时间计时的情况一定要将字符串转换为整型;

 

六、我们这次写这个程序估计大概用10个小时左右。



总结:这次的结对任务让我更懂得了如何与别人合作写一个程序,一开始的时候我是很不习惯和别人合作来写一段代码的,因为不知道怎么和和对方配合。

不过经过了几次的交流,我们慢慢有了默契。合作后我发现写代码的概率大大的提高了。因为在一个人写错了某个地方的时候,对方会马上指出来,避免了更大的错误。而且两个人的合作效率会更高。

过程中也明白了两个人合作和一个人写的区别在于自己一个想问题很容易转牛角尖,而两个人想,另一个人会给出正确的方向,导致遇到问题很快能够解决。


代码如下:

  1 import java.awt.*;
2 import java.awt.event.*;
3 import javax.swing.*;
4 public class Size {
5 public static void main(String[] args) {
6 new Frame();
7
8 }
9 }
10 import javax.swing.*;
11
12 import java.awt.event.*;
13 import java.math.BigDecimal;
14 import java.text.DecimalFormat;
15 import java.text.NumberFormat;
16
17 class Frame extends JFrame implements ActionListener
18 {
19 int a, b, c, count, num;//a,b分别是第一个操作数,第二个操作数,c是存放用户输入的答案,count是题目总数,num是用于存放代表运算符的数
20 int t=0,f=0,sum=0,s=1;//s表示阶乘结果
21 float d,d1;//d是用于存放除法结果,d1是用于处理除法结果中保留小数点后两位
22 int counter=0;//统计答题个数
23 Timer time;
24 int t1 = 0;
25 JTextField T;//定义一个文本
26 JLabel L1 = new JLabel("请输入题目个数(1-5):");
27 JTextField T1 = new JTextField(5); //放题目个数
28 JButton B3 = new JButton("开始");
29 JTextField T2 = new JTextField(10); //设置运算式
30 JTextField T3 = new JTextField(10); //获取输入答案
31 JTextField T4 = new JTextField(10);//存放答案提示
32 JButton B1 = new JButton("确定");
33 JButton B2 = new JButton("下一题");
34
35 Frame() {
36 T=new JTextField(10);//计时
37 T.setEditable(false);
38 time = new Timer(1000, this);
39 time.start();
40 T.setText(setTime(t1));
41 this.setTitle("四则运算");
42 this.setSize(280, 200);
43 this.setVisible(true);
44 this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
45 JPanel p2 = new JPanel();
46 JPanel p1 = new JPanel();
47 p2.add(L1);
48 p2.add(T1);
49 p2.add(B3);
50 p2.add(T2);
51 p2.add(T3);
52 p2.add(T4);
53 p2.add(T);
54 p1.add(B1);
55 p1.add(B2);
56 add(p2, "Center");
57 add(p1, "South");
58
59 B3.addActionListener(new ActionListener() { //按钮B3表示开始
60 public void actionPerformed(ActionEvent e) {
61 boolean flag=false;
62 Object bj = e.getSource(); // 获得事件源
63 if (bj == B3) {
64 try{ //如果输入字符,抛出异常,提示错误
65 count = Integer.parseInt(T1.getText()); //将文本中获取的字符串转换为整型
66 }
67 catch(Exception f)
68 {
69 flag=true;
70 }
71 if(flag)
72 {
73 JOptionPane.showMessageDialog(null,"输入有误,请输入数字!");
74 }
75 if(count>5)
76 {
77 JOptionPane.showMessageDialog(null, "题目个数不能超过五个!请重新输入。");
78 }
79 if(count<=5)
80 {
81 num = (int) (Math.random() * 5);
82 a = (int) (Math.random() * 200) - 100;
83 b = (int) (Math.random() * 200) - 100;
84 if (num == 0)//num为0时,是加法运算
85 {
86 if (a <0 && b <0) //判断a,b的正负并给负数加括号
87 {
88 T2.setText("(" + a + ")" + "+(" + b + ")=");
89 }
90 else if (a <0 && b > 0)
91 {
92 T2.setText("(" + a + ")" + "+" + b + "=");
93 }
94 else if (a > 0 && b <0)
95 {
96 T2.setText(a + "+(" + b + ")=");
97 }
98 else
99 {
100 T2.setText(a + "+" + b + "=");
101 }
102 c = a + b;
103 //处理按钮监听事件
104
105 } else if (num == 1) //num为1表示减法运算
106 {
107 if (a <0 && b <0)
108 {
109 T2.setText("(" + a + ")" + "-(" + b + ")=");
110 }
111 else if (a <0 && b > 0)
112 {
113 T2.setText("(" + a + ")" + "-" + b + "=");
114 }
115 else if (a > 0 && b <0)
116 {
117 T2.setText(a + "-(" + b + ")=");
118 }
119 else
120 {
121 T2.setText(a + "-" + b + "=");
122 }
123 c = a - b;
124
125 } else if (num == 2) { //num为2表示乘法运算
126 if (a <0 && b <0) {
127 T2.setText("(" + a + ")" + "*(" + b + ")=");
128
129 } else if (a <0 && b > 0) {
130 T2.setText("(" + a + ")" + "*" + b + "=");
131
132 } else if (a > 0 && b <0) {
133 T2.setText(a + "*(" + b + ")=");
134
135 } else {
136 T2.setText(a + "*" + b + "=");
137
138 }
139 c = a * b;
140 }
141 else if (num == 3&&b!=0) { //num为3表示除法运算,并且要考虑除数不能为0的情况,因此b!=0
142 if (a <0 && b<0) {
143 T2.setText("(" + a + ")" + "/(" + b + ")=");
144
145 } else if (a <0 && b > 0) {
146 T2.setText("(" + a + ")" + "/" + b + "=");
147
148 } else if (a > 0 && b<0) {
149 T2.setText(a + "/(" + b + ")=");
150
151 } else {
152 T2.setText(a + "/" + b + "=");
153
154 }
155 d= (float)a/(float)b; //将整型a,b强制转换为浮点型,保证结果正确
156 BigDecimal bg = new BigDecimal(d); //将除法结果保留小数点后两位
157 d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
158 }
159 else
160 {
161 a=(int)(Math.random()*10);
162 T2.setText(a+"!=");
163 int i;
164 if(a==0||a==1)
165 {
166 s=1;
167 }
168 else
169 {
170
171 for(i=1;i<=a;i++)//计算阶乘
172 {
173 s=s*i;
174 }
175 }
176 }
177
178 }
179 }
180 }
181 });
182 B2.addActionListener(new ActionListener() { //B2表示下一题
183 public void actionPerformed(ActionEvent e) {
184 Object bj = e.getSource(); // 获得事件源
185 if (bj == B2) {
186 int a, b, num, i = 1;
187 if (i < count) {
188 T3.setText(null);//当按钮按下一题时就将T3与T4的内容更新
189 T4.setText(null);
190 num = (int) (Math.random() * 5);
191 a = (int) (Math.random() * 200) - 100;
192 b = (int) (Math.random() * 200) - 100;
193 i++;
194 if (num == 0) {
195 if (a <0 && b <0) {
196 T2.setText("(" + a + ")" + "+(" + b + ")=");
197 } else if (a <0 && b > 0) {
198 T2.setText("(" + a + ")" + "+" + b + "=");
199 } else if (a > 0 && b <0) {
200 T2.setText(a + "+(" + b + ")=");
201 } else {
202 T2.setText(a + "+" + b + "=");
203 }
204 c = a + b;
205 } else if (num == 1) {
206 if (a <0 && b <0) {
207 T2.setText("(" + a + ")" + "-(" + b + ")=");
208
209 } else if (a <0 && b > 0) {
210 T2.setText("(" + a + ")" + "-" + b + "=");
211 } else if (a > 0 && b <0) {
212 T2.setText(a + "-(" + b + ")=");
213 } else {
214 T2.setText(a + "-" + b + "=");
215 }
216 c = a - b;
217
218 } else if (num == 2) {
219 if (a <0 && b <0) {
220 T2.setText("(" + a + ")" + "*(" + b + ")=");
221
222 } else if (a <0 && b > 0) {
223 T2.setText("(" + a + ")" + "*" + b + "=");
224
225 } else if (a > 0 && b <0) {
226 T2.setText(a + "*(" + b + ")=");
227
228 } else {
229 T2.setText(a + "*" + b + "=");
230
231 }
232 c = a * b;
233
234
235 }
236 else if (num == 3&&b!=0) {
237 if (a <0 && b <0) {
238 T2.setText("(" + a + ")" + "/(" + b + ")=");
239
240 } else if (a <0 && b > 0) {
241 T2.setText("(" + a + ")" + "/" + b + "=");
242 } else if (a > 0 && b <0) {
243 T2.setText(a + "/(" + b + ")=");
244 } else {
245 T2.setText(a + "/" + b + "=");
246 }
247 d= (float)a/(float)b;
248 BigDecimal bg = new BigDecimal(d);
249 d1 =(float)bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
250
251
252 }
253 else
254 {
255 a=(int)(Math.random()*10);
256 T2.setText(a+"!=");
257 if(a==0||a==1)
258 {
259 s=1;
260 }
261 else
262 {
263
264 for(i=1;i<=a;i++)//计算阶乘
265 {
266 s=s*i;
267 }
268 }
269 }
270
271 counter++;
272 if(counter>=count)//判断题目是否答完,答完了就弹出一个提示题目答完并给出答题时间的对话框
273 {
274 JOptionPane.showMessageDialog(null, "题目已答完,答对了"+t+"道题,答错了"+f+"道题\n\n总分是"+sum+"\n\n总用时为:"+t1+"");
275 }
276 }
277 }
278 }
279 });
280 B1.addActionListener(new ActionListener() { //按钮B1表示确定
281 public void actionPerformed(ActionEvent e) {
282 Object bj = e.getSource(); // 获得事件源
283 if (bj == B1) {
284 if (d1== Float.parseFloat(T3.getText()) || c == Float.parseFloat(T3.getText()) || s ==Float.parseFloat(T3.getText())) {
285 T4.setText("恭喜你,答对了");
286 t=t+1;
287 sum=sum+20;//每答对一题加20分
288 } else {
289 T4.setText("抱歉,你答错了");
290 f=f+1;
291 }
292 }
293 }
294 });
295
296 }
297 public void actionPerformed(ActionEvent e) {
298 t1= t1 + 1; //累加时间
299 T.setText(setTime(t1));
300
301 }
302 public String setTime(int t1) {//累加时间
303 int hour, minute, second, a;
304 String mytimer, strsec, strmin, strhour;
305 t1=t1 % (60 * 60 * 24);
306 secOnd= t1 % 60;
307 a = t1/ 60;
308 minute = a % 60;
309
310 hour = a / 60;
311 if (second <= 9) {
312 strsec = "0" + String.valueOf(second);
313 } else {
314 strsec = String.valueOf(second);
315 }
316 if (minute <= 9) {
317 strmin = "0" + String.valueOf(minute);
318 } else {
319 strmin = String.valueOf(minute);
320 }
321 if (hour <= 9) {
322 strhour = "0" + String.valueOf(hour);
323 } else {
324 strhour = String.valueOf(hour);
325 }
326 mytimer = "计时: " + strhour + ":" + strmin + ":" + strsec;
327 return mytimer;
328 }
329
330
331 }

 

 

运行结果:

这是写代码时的照片


推荐阅读
  • 找出字符串中重复字符
    2019独角兽企业重金招聘Python工程师标准packagejavaBasic;importjava.util.HashMap;importjava.util.Map; ... [详细]
  • 一、在androidStudio中实现tabs比较简单,新建项目就可以选择tabs模板进行创建,默认实现tabs功能:直接运行项目就可以看到效果:可以说非常简单,但是我们在实际开发 ... [详细]
  • 这篇文章主要介绍“CSS浮动和定位属性介绍”,在日常操作中,相信很多人在CSS浮动和定位属性介绍问题上存在疑惑,小编查阅了各式资料,整理出简单 ... [详细]
  • 1.File类:文件和目录路径名的抽象表现形式2.创建对象:File(Stringpathname)通过给定的路径创建文件对象File(Stringpa ... [详细]
  • 1.背景java.util.concurrent.atomic这个包是非常实用,解决了我们以前自己写一个同步方法来实现类似于自增长字段的问题。在Java语言中,增量操作符(++)不是原子的, ... [详细]
  • JNI技术实践小结转自http:sett ... [详细]
  • 我正在使用数组列表通过构建一个交互式菜单供用户选择来存储来自用户输入的值。到目前为止,我的两个选择是为用户提供向列表输入数据和读取列表的全部内容。到目前为止,我创建的代码由两个类组成。 ... [详细]
  • Action参数绑定功能提供了URL变量和操作方法的参数绑定支持,这一功能可以使得你的操作方法定义和参数获取更加清晰,也便于跨模块调用操作方法了。这一新特性对以往的操作方法使用没有任何影响,你也可以用 ... [详细]
  • 在这一期的SendMessage函数应用中,我将向大家介绍如何利用消息函数来扩展树型列表(TreeView)控件的功能相信对于树型列表控件大家十分的熟悉, ... [详细]
  • 1.什么是hashcode方法?hashcode方法返回对象的哈希码值在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有改变& ... [详细]
  • 开发笔记:Xunit测试使用个人小结
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Xunit测试使用个人小结相关的知识,希望对你有一定的参考价值。因工作中用到xunit测试,故总结下用法,以供个人参考使 ... [详细]
  • x86x64体系探索及编程(对x86处理器介绍得最详尽又最具实践指导意义的一本书)邓志著ISBN978-7-121-18176-42012年10月出版定价:119.00元16开840页对x86处理 ... [详细]
  • C#的Type对象的简单应用
    通过Type对象可以获取类中所有的公有成员直接贴代码:classMyClass{privatestringname;privateintid;publicstringcity;pu ... [详细]
  • Shiro 简单了解
    Shiro简单了解简单用过SpringSecurity安全框架后,再试试另一个安全框架——Shiro。1.Shiro简介ApacheShiro是一个强大且易用的Java安全框架:S ... [详细]
  • 每次用到v-charts我都一阵头疼,因为明明是相同的功能,但是我好像每次用到的解决方法都不一样??每次都是在api中各种查,各种尝试…直到做了个各种数据图形的需求,决定还是好好整 ... [详细]
author-avatar
翔溢_142
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有