作业5 四则运算 测试与封装 5.1

本文详细介绍了如何在Eclipse环境中使用封装技术改进四则运算程序,包括代码重载、对象封装及其作用,以及实现过程中的注意事项。文章还讨论了封装的优点和总结了改进后程序的进一步发展方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译环境:Eclipse

开发人员:钟鹏升

开发时间:2015-04-30

更新的代码:

运用封装,新建Core类方法重载计算方法:

public void jbInit() throws Exception
    {
        this.setLayout(null);
        L.setBounds(60, 150, 150, 40);
        L.setFont(firstFont);
        T.setBounds(190, 150, 80, 40);
        B.setBounds(280, 145, 60, 50);
        colorBtn.setBounds(380, 20, 60, 50);
        L1.setBounds(40, 220, 400, 40);       
        L1.setFont(secondFont);
        L2.setFont(thirdFont);
        L3.setFont(thirdFont);
        L4.setFont(thirdFont);
        P1.setBounds(120, 300, 200, 200);
        B.addActionListener(this);
        colorBtn.addActionListener(new ActionListener() {
            
            @Override
            public void actionPerformed(ActionEvent e) {
                setBackground(new Color(
                          (new Double(Math.random() * 128)).intValue() + 128,   
                          (new Double(Math.random() * 128)).intValue() + 128,   
                          (new Double(Math.random() * 128)).intValue() + 128));
                P1.setBackground(new Color(
                          (new Double(Math.random() * 128)).intValue() + 128,   
                          (new Double(Math.random() * 128)).intValue() + 128,   
                          (new Double(Math.random() * 128)).intValue() + 128));                
            }
        });
        Core core=new Core();
        core.calc(op, a, b);
        this.add(L);
        this.add(T);
        this.add(B);
        this.add(L1);
        this.add(P1);
        this.add(colorBtn);
        P1.add(L2);
        P1.add(L3);
        P1.add(L4);
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==B)
        {
            t = T.getText();            
            
            /*      检查学号是否输入      */
            if(!checkString(t)){
                    JOptionPane.showMessageDialog(null, "未输入数字!","提示",JOptionPane.ERROR_MESSAGE);
                    return;
            }
            else if((!checkInteger(t))){
                    T.setText("");
                    JOptionPane.showMessageDialog(null, "请输入数字!","提示",JOptionPane.ERROR_MESSAGE);
                    return;
            }
            else {
                n++;
                if(Double.parseDouble(t)==answer){
                    r++;
                    L1.setText("               答对了!");
                }
                else{
                    L1.setText("答错了!"+L.getText()+"的正确答案是:"+answer);
                }
                T.setText("");
                if(n<=Integer.parseInt(Cal.number)){
                    Core core=new Core();
                    core.calc(op, a, b);
                }
                else
                    {
                        B.setEnabled(false);
                        L2.setText("本次测验共"+Integer.parseInt(Cal.number)+"题");
                        L3.setText("你答对了"+r+"题");
                        ra=(double)r/(n-1);
                        DecimalFormat fmt = new DecimalFormat("0.##%");
                        L4.setText("正确率为:"+fmt.format(ra));
                    }
            }  
        }
    }

Core类方法重载:

public class Core{
        public void calc(int op,int a,int b){
            a =new Random().nextInt(100);
            b =new Random().nextInt(100);
            op=new Random().nextInt(4);
            switch(op)
            {
            case 0:
                L.setText("题"+n+". "+a+"+"+b+"=");
                answer=(double) (a+b);
                break;
            case 1:
                L.setText("题"+n+". "+a+"-"+b+"=");
                answer=(double) (a-b);
                break;
            case 2:
                L.setText("题"+n+". "+a+"*"+b+"=");
                answer=(double) (a*b);
                break;
            case 3:
                while(b==0){
                    b =new Random().nextInt(100);
                }
                L.setText("题"+n+". "+a+"/"+b+"=");
                BigDecimal   x   =   new   BigDecimal((double)a/b);  
                answer  =   x.setScale(2,   BigDecimal.ROUND_HALF_UP).doubleValue();                
                break;
            }
        }
    }

运用封装后:

封装作用:

   1、对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。

   2、对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。

优点:

   1、重用。

   2、可以只关注于使用,而不关心具体的实现。

     3、面向对象的三大特征之一。

     4、具有安全性。

     5、防止代码冗余,也可以方便代码的调用,同时也可以防止不必要的错误。

   6、类内部的结构可以自由修改,可以对成员进行更精确的控制,隐藏信息,实现细节。

总结:

  由于原本的程序不是让用户输入数字来运算的,是自动生成的四则运算,目前更改的内容较少,仍需继续改进。

转载于:https://www.cnblogs.com/SshengS/p/4468396.html

内容概要:本文针对国内加密货币市场预测研究较少的现状,采用BP神经网络构建了CCi30指数预测模型。研究选取2018年3月1日至2019年3月26日共391天的数据作为样本,通过“试凑法”确定最优隐结点数目,建立三层BP神经网络模型对CCi30指数收盘价进行预测。论文详细介绍了数据预处理、模型构建、训练及评估过程,包括数据归一化、特征工程、模型架构设计(如输入层、隐藏层、输出层)、模型编译训练、模型评估(如RMSE、MAE计算)以及结果可视化。研究表明,该模型在短期内能较准确地预测指数变化趋势。此外,文章还讨论了隐层节点数的优化方法及其对预测性能的影响,并提出了若干改进建议,如引入更多技术指标、优化模型架构、尝试其他时序模型等。 适合人群:对加密货币市场预测感兴趣的研究人员、投资者及具备一定编程基础的数据分析师。 使用场景及目标:①为加密货币市场投资者提供一种新的预测工具和方法;②帮助研究人员理解BP神经网络在时间序列预测中的应用;③为后续研究提供改进方向,如数据增强、模型优化、特征工程等。 其他说明:尽管该模型在短期内表现出良好的预测性能,但仍存在一定局限性,如样本量较小、未考虑外部因素影响等。因此,在实际应用中需谨慎对待模型预测结果,并结合其他分析工具共同决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值