zoukankan      html  css  js  c++  java
  • 【作业报告】作业5 四则运算 测试与封装 5.2(已更新)

    测试与封装 5.2

    程序开发简介:

    【开发环境】:eclipse

    【开发人员】:Ives & 郑胜斌

    【博客地址】:38郑胜斌

    【开发时间】:2015-05-08

    【版本】:5.2 

    【协同工作】:

          这次主要是添加减法乘法除法,保证除数不为0,修复点击“再来”会重新出题

    【未解决问题】:

          判断文本框为空没有反应

          if(textField_3.getText()=="")

          要把 == 改成 != 才有反应

    界面代码如下:

      1 package com.ives;
      2 
      3 import java.awt.EventQueue;
      4 
      5 public class frame {
      6 
      7     private JFrame frame;
      8     private JTextField textField;
      9     private JTextField textField_1;
     10     private JTextField textField_2;
     11     private JTextField textField_3;
     12     private JTextField textField_4;
     13     private JTextField textField_5;
     14     frame f;
     15     
     16     int a;
     17     int b;
     18     char []op={'+','-','*','/'};
     19     String Sa;
     20     String Sb;
     21     int result;
     22     static int i = (int) (Math.random() * 3);
     23     
     24 
     25     Expression expression = new Expression();
     26     private JButton btnNewButton_1;
     27 
     28 
     29     /**
     30      * Launch the application.
     31      */
     32     public static void main(String[] args) {
     33         EventQueue.invokeLater(new Runnable() {
     34             public void run() {
     35                 try {
     36                     frame window = new frame();
     37                     window.frame.setVisible(true);System.out.print(i);
     38                 } catch (Exception e) {
     39                     e.printStackTrace();
     40                 }
     41             }
     42         });
     43     }
     44 
     45     /**
     46      * Create the application.
     47      * @throws Yichang 
     48      */
     49     public frame() throws Yichang {
     50         initialize();
     51     }
     52 
     53     /**
     54      * Initialize the contents of the frame.
     55      */
     56     private void initialize() throws Yichang{
     57         frame = new JFrame();
     58         frame.setBounds(100, 100, 517, 352);
     59         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     60         
     61         JPanel panel = new JPanel();
     62         frame.getContentPane().add(panel, BorderLayout.CENTER);
     63         panel.setLayout(null);
     64         
     65         JLabel lblNewLabel = new JLabel("u56DBu5219u8FD0u7B97u56685.2");
     66         lblNewLabel.setFont(new Font("微软雅黑", Font.PLAIN, 30));
     67         lblNewLabel.setBounds(141, 0, 208, 57);
     68         panel.add(lblNewLabel);
     69         
     70         textField = new JTextField();
     71         textField.setHorizontalAlignment(SwingConstants.CENTER);
     72         textField.setFont(new Font("微软雅黑", Font.PLAIN, 30));
     73         textField.setBounds(56, 82, 88, 45);
     74         panel.add(textField);
     75         textField.setColumns(10);
     76         
     77         textField_1 = new JTextField();
     78         textField_1.setHorizontalAlignment(SwingConstants.CENTER);
     79         textField_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
     80         textField_1.setColumns(10);
     81         textField_1.setBounds(220, 82, 88, 45);
     82         panel.add(textField_1);
     83         
     84         textField_2 = new JTextField("=");
     85         textField_2.setHorizontalAlignment(SwingConstants.CENTER);
     86         textField_2.setEditable(false);
     87         textField_2.setFont(new Font("微软雅黑", Font.PLAIN, 30));
     88         textField_2.setColumns(10);
     89         textField_2.setBounds(318, 82, 36, 45);
     90         panel.add(textField_2);
     91         
     92         textField_3 = new JTextField();
     93         textField_3.setHorizontalAlignment(SwingConstants.CENTER);
     94         textField_3.setFont(new Font("微软雅黑", Font.PLAIN, 30));
     95         textField_3.setColumns(10);
     96         textField_3.setBounds(371, 82, 88, 45);
     97         panel.add(textField_3);
     98         
     99         JButton btnNewButton = new JButton("u505Au5B8Cu4E86");
    100         btnNewButton.setFont(new Font("微软雅黑", Font.PLAIN, 30));
    101         btnNewButton.setBounds(188, 156, 131, 45);
    102         panel.add(btnNewButton);
    103         
    104         JLabel lblNewLabel_1 = new JLabel("u8BA1u7B97u7ED3u679C");
    105         lblNewLabel_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
    106         lblNewLabel_1.setBounds(56, 222, 131, 35);
    107         panel.add(lblNewLabel_1);
    108         
    109         textField_4 = new JTextField();
    110         textField_4.setFont(new Font("微软雅黑", Font.PLAIN, 20));
    111         textField_4.setColumns(10);
    112         textField_4.setBounds(188, 222, 161, 35);
    113         panel.add(textField_4);
    114         
    115         textField_5 = new JTextField();
    116         textField_5.setHorizontalAlignment(SwingConstants.CENTER);
    117         textField_5.setEditable(false);
    118         textField_5.setFont(new Font("微软雅黑", Font.PLAIN, 30));
    119         textField_5.setText(String.valueOf(op[i]));
    120         textField_5.setColumns(10);
    121         textField_5.setBounds(159, 82, 44, 45);
    122         panel.add(textField_5);
    123         
    124         a = expression.geta();
    125         Sa = String.valueOf(a);
    126         textField.setText(Sa);
    127         
    128         b = expression.getb();
    129         Sb = String.valueOf(b);
    130         textField_1.setText(Sb);
    131         
    132         btnNewButton_1 = new JButton("u518Du6765 ");
    133         btnNewButton_1.addActionListener(new ActionListener() {
    134             public void actionPerformed(ActionEvent e) {
    135                 
    136                 try {
    137                         f = new frame();
    138                 } catch (Yichang e1) {
    139                     // TODO 自动生成的 catch 块
    140                     e1.printStackTrace();
    141                 }
    142                 frame.dispose();
    143                 f.frame.setVisible(true);
    144                 
    145             }
    146         });
    147         btnNewButton_1.setFont(new Font("微软雅黑", Font.PLAIN, 30));
    148         btnNewButton_1.setBounds(366, 222, 107, 36);
    149         panel.add(btnNewButton_1);
    150         
    151 
    152         btnNewButton.addActionListener(new ActionListener() {
    153             public void actionPerformed(ActionEvent arg0){
    154                 int n3=Integer.valueOf(textField_3.getText().toString());    
    155                 switch(op[i])
    156                 {
    157                     case '+':result = expression.expressionadd();break;
    158                     case '-':result = expression.expressionmin();break;
    159                     case '*':result = expression.expressionchen();break;
    160                     case '/':result = expression.expressionchu();break;
    161                 }
    162                 if(textField_3.getText()!="")
    163                 {
    164                      if(result==n3)
    165                         {
    166                             textField_4.setText(" 正确");
    167                         }
    168                          else
    169                         {
    170                             textField_4.setText(" 错误!答案为"+result);
    171                         }
    172                 }     
    173                 try {
    174                     if(textField_3.getText()=="")
    175                     throw new Yichang("不能为空!");
    176                     } catch (Yichang e) {
    177                         // TODO 自动生成的 catch 块
    178                         e.printStackTrace();
    179                     }
    180                 
    181                 /*try {
    182                  if(n3<0)
    183                 
    184                         throw new Yichang("不可能是负数!");
    185                     } catch (Yichang e) {
    186                         // TODO 自动生成的 catch 块
    187                         e.printStackTrace();
    188                     }*/
    189 
    190                 }
    191         });
    192     }
    193 }
    Frame

    计算逻辑代码如下:

     1 package com.ives;
     2 import java.util.*;
     3 
     4 import com.ives.Input;
     5 public class Expression 
     6 {
     7     private int a = (int)(Math.random() * Math.pow(10,2)-1);
     8     private int b = (int)(Math.random() * Math.pow(10,2)-1);
     9     private int op;
    10     static int c;//用户答案
    11     int answer;//答案
    12     int answer1;
    13     static Scanner in=new Scanner(System.in);
    14     
    15 public int geta()
    16 {
    17     return a;
    18 }
    19 
    20 public void seta(int a)
    21 {
    22     this.a = a;
    23 }
    24 
    25 public int getb()
    26 {
    27     return b;
    28 }
    29 
    30 public void setb(int b)
    31 {
    32     this.b = b;
    33 }
    34 
    35 public int expressionadd()
    36 {
    37     answer = a+b;
    38     return answer;
    39 }
    40 public int expressionmin()
    41 {
    42     answer = a-b;
    43     return answer;
    44 }
    45 public int expressionchen()
    46 {
    47     answer = a*b;
    48     return answer;
    49 }
    50 public int expressionchu()
    51 {
    52     b = (b == 0 ? b = 1 +(int)(Math.random() * Math.pow(10,2)-1):b);//排除除法被除数为0的情况
    53     answer = a/b;
    54     return answer;
    55 }
    56 public static void main(String[] args){
    57     int answer;
    58     Expression expression = new Expression();
    59     
    60     //answer = expression.answer;
    61     //Input input = new Input();
    62     //Expression.c = input.a;
    63     /*try{
    64         Expression.c = in.nextInt();
    65     }
    66     catch(InputMismatchException e)
    67     {   System.err.println("
    错误!  ,请你输入一个整数");
    68     }*/
    69     //if(answer==c)
    70 /*    {
    71         System.out.print("答对了");
    72     }
    73     else System.out.print("答错了");*/
    74     //System.out.print("answer="+answer);
    75 }
    76 }
    Expression

    输入代码如下:

     1 package com.ives;
     2 import java.util.*;
     3 
     4 public class Input {
     5     public int a; 
     6     static Scanner in=new Scanner(System.in);
     7     public void seta(int intput){
     8         a = intput;
     9     }
    10     public Input()
    11     {
    12         try{
    13             a = in.nextInt();
    14         }
    15         catch(InputMismatchException e)
    16         {  
    17             System.err.println("
    错误!  请你输入一个整数!
    ");
    18         }
    19     }
    20     public int getinput()
    21     {
    22         return a;
    23     }
    24     
    25 }
    Input

     运行截图如下:

     

    这里点击再来会重新出题.

    这次的单元测试和5.1的一样的。

    个人体会:

                         这次做这个5.2的实在有点。。。因为小伙伴的组织的工作实在有点忙,不过最终还是完成了,不是有句话说,有志者事竟成咩。时间挤一挤总会有的。这奥次5.2的作业老师是有提到用测试驱动开发做的。什么是测试驱动开发呢?这是一种开发模型,就是在编写代码前先写测试的代码,然后在编写核心代码。开始的时候我以为是测试驱动,开发。其实原来是测试-驱动-开发。就是测试促进开发。对于这种敏捷开发的极限编程开发模型,我会在以后的开发里面尝试使用下这种开发模型的。

                 我会尝试下把这个计算功能做成一个app的,大家期待吧。~

    -----------------此次的作业报告到此结束,谢谢老师审阅-----------------------

  • 相关阅读:
    Codeforces Round #375 (Div. 2) A. The New Year: Meeting Friends 水题
    Codeforces Round #372 (Div. 1) A. Plus and Square Root 数学题
    Codeforces Round #371 (Div. 1) C. Sonya and Problem Wihtout a Legend 贪心
    Codeforces Round #371 (Div. 1) D. Animals and Puzzle 二维倍增
    BZOJ 4706: B君的多边形 找规律
    HDU 5909 Tree Cutting 动态规划 快速沃尔什变换
    Codeforces Round #284 (Div. 1) A. Crazy Town 计算几何
    HDU 5908 Abelian Period 暴力
    HDU 5907 Find Q dp
    Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) D. Generating Sets 贪心
  • 原文地址:https://www.cnblogs.com/IvesHe/p/4488633.html
Copyright © 2011-2022 走看看