• 作业5.1


    结伴队友是12陈帝燊,博客地址:http://www.cnblogs.com/cds94/

    这次有点赶,所以与之前的队友结对

    主要代码:

    import java.awt.*; 
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    
    import javax.swing.*; 
    public  class rrr extends JFrame implements ActionListener{
        JLabel L1=new JLabel("题目:");
        JLabel L2=new JLabel("输入题目个数:"); 
        JLabel L3=new JLabel("输入答案");
        JLabel L4=new JLabel("        "); 
        JLabel L5=new JLabel("        ");
        JTextField T1=new JTextField(6);
        JTextField T2=new JTextField(6);
        JButton B1=new JButton("开始");
        JButton B2=new JButton("重新开始");
        JButton B3=new JButton("下一题");
        JButton B4=new JButton("提交");
        JPanel p1=new JPanel();
        int n=0,ri,m=0,p;
        int a[]=new int[100];
        int b[]=new int[100];
        String c[]=new String[100];
        String ch[]={"+","-","*","/"};
        public static void main(String[] args) {
            new rrr();
            
            // TODO Auto-generated method stub
        }
        rrr()
        {
            
                this.setTitle("四则运算");
                this.setSize(300,350);
                this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                this.add(p1); 
                p1.setLayout(null);
                L2.setBounds(50, 20, 90, 20);
                p1.add(L2);
                T2.setBounds(150, 20, 90, 30);
                p1.add(T2);
               L1.setBounds(50, 70, 90, 30);
                p1.add(L1);
                L4.setBounds(150, 70, 90, 30);
                p1.add(L4);
                L3.setBounds(50,120, 90, 30);
                p1.add(L3);
                T1.setBounds(150, 120, 90, 30);
                p1.add(T1);
                T1.setEnabled(false);
                B1.setBounds(50, 170, 90, 30);
                p1.add(B1);
                B1.addActionListener(this);
                B2.setBounds(150, 170, 90, 30);
                p1.add(B2);
                B2.setEnabled(false);
                B2.addActionListener(this);
                B3.setBounds(50,220,90,30);
                p1.add(B3);
                B3.setEnabled(false);
                B3.addActionListener(this);
                B4.setBounds(150, 220,90,30);
                p1.add(B4);
                B4.setEnabled(false);
                B4.addActionListener(this);
                L5.setBounds(50, 270, 180, 30);
                p1.add(L5);
                this.setVisible(true);
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//可以关闭窗体     
                B1.addActionListener(this);
        }
        public void actionPerformed(ActionEvent e){
            if(e.getSource()==B1){
                B1.setEnabled(false);
                B2.setEnabled(true);
                B3.setEnabled(true);
                B4.setEnabled(true);
                T2.setEnabled(false);
                T1.setEnabled(true);
                L5.setText(" ");
                m=0;
                ri=0;
                n=(int) Double.parseDouble(T2.getText());
                if(n>5||n<1)
                {
                    JOptionPane.showMessageDialog(null,"输入的个数不能大于5或者小于1","注意",JOptionPane.INFORMATION_MESSAGE);
                }
                else begin();
                
            }
            if(e.getSource()==B2){
                B1.setEnabled(true);
                B2.setEnabled(false);
                B3.setEnabled(false);
                B4.setEnabled(false);
                T2.setEnabled(true);
                T1.setText("");
                T2.setText("");
            }
            if(e.getSource()==B3){
                    begin();
                    T1.setText("");
                    B4.setEnabled(true);
                    L5.setText(" ");
            }
            if(e.getSource()==B4){
                answer();
                B4.setEnabled(false);
                if(m==n){
                    B2.setEnabled(true);
                    B3.setEnabled(false);
                    B4.setEnabled(false);
                    T1.setEditable(false);
                    JOptionPane.showMessageDialog(null,"答对了"+ri+"题,答错了"+(n-ri)+"题","成绩",JOptionPane.INFORMATION_MESSAGE);
                }
            }
        }
        void begin(){
            a[m]=(int)(Math.random()*200-100);
            b[m]=(int)(Math.random()*200-100);
            c[m]=ch[(int)(Math.random()*3)];
            while(b[m]==0&&c[m]==ch[3]){
                b[m]=(int)(Math.random()*200-100);
            }
            if(a[m]>=0&&b[m]>=0){
            L4.setText(String.valueOf(a[m])+c[m]+String.valueOf(b[m])+"=");
            }
            if(a[m]<0&&b[m]>=0){
                L4.setText("("+String.valueOf(a[m])+")"+c[m]+String.valueOf(b[m])+"=");
                }
            if(a[m]>=0&&b[m]<0){
                L4.setText(String.valueOf(a[m])+c[m]+"("+String.valueOf(b[m])+")"+"=");
                }
            if(a[m]<0&&b[m]<0){
                L4.setText("("+String.valueOf(a[m])+")"+c[m]+"("+String.valueOf(b[m])+")"+"=");
                }
        }
        void answer(){
            calc re=new calc();
            double an=Double.parseDouble(T1.getText());
            if(re.cal(a[m], b[m], c[m])==an){
                L5.setText("答案正确!");
                ri++;
            }
            else{
                L5.setText("答案错误!正确答案是"+re.cal(a[m], b[m], c[m]));
            }
            m++;
        }
    }

    计算功能的算法封装成的类:

    public class cal {
        int calc(int a,int b,String c){
            int d = 0;
            if(c.equals("+")) d=add(a,b);
            if(c.equals("-")) d=minius(a,b);
            if(c.equals("*")) d=mult(a,b);
            if(c.equals("/")) d=divi(a,b);
            return d;
        }
        int add(int a,int b){
            return a+b;
        } 
        int minius(int a,int b){
            return a-b;
        }
        int mult(int a,int b){
            return a*b;
        }
        int divi(int a,int b){
            return a/b;
        }
    
    }

     单元测试:

    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    public class calTest {
        cal test=new cal();
        @Test
        public void testCal() {
            assertEquals(-4,test.cal(-12, 3,"/"));
        }
        @Test
        public void testCal2() {
            assertEquals(-9,test.cal(-12, 3,"+"));
        }
        @Test
        public void testCal3() {
            assertEquals(-15,test.cal(-12, 3,"-"));
        }
        @Test
        public void testCal4() {
            assertEquals(-36,test.cal(-12, 3,"*"));
        }
        @Test
        public void testAdd() {
            assertEquals(9,test.add(3, 6));
        }
    
        @Test
        public void testMinius() {
            assertEquals(-6,test.minius(3, 9));
        }
    
        @Test
        public void testMult() {
            assertEquals(-27,test.mult(-3, 9));
        }
    
        @Test
        public void testDivi() {
            assertEquals(5,test.divi(25, 5));
        }
    
    }

    测试结果: 

  • 相关阅读:
    luoguP1080 国王游戏 题解(NOIP2012)(贪心+高精)
    luoguP1079 Vigenère 密码 题解(NOIP2012)
    luoguP2184 贪婪大陆 题解(树状数组)
    luoguP2680 运输计划 题解(二分答案+树上差分)
    树链剖分总结
    树上差分总结
    luoguP3258 [JLOI2014]松鼠的新家 题解(树上差分)
    简单差分(保证你一看就懂)
    luoguP3128 [USACO15DEC]最大流Max Flow 题解(树上差分)
    luoguP1541 乌龟棋 题解(NOIP2010)
  • 原文地址:https://www.cnblogs.com/poipoi/p/4469075.html
Copyright © 2020-2023  润新知