zoukankan      html  css  js  c++  java
  • 复利计算器4.1

    package com.fulijisuanqi.swing;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    /*
     * 本次更新主要更新了在输入过程中输入负数或者零的处理方法,
     * 更新以后如果输入的数小于或等于零会弹框提示,并且不会输出结果
     */
    
    public class calcutor extends JFrame{
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            calcutor frame = new calcutor();
            frame.setVisible(true);
            frame.setBounds(100, 100, 400, 400);
            frame.setTitle("计算器3.1");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    
        private JPanel jpanel;
        private JLabel label,label00,label01,label02,label03,label04,label05;
        private JComboBox<Object> box;
        private JTextField field01,field02,field03,field04,field05;
        private JButton button;
        private static double benjin,lilv,nianxian,zhongzhi,dingtou,huankuan,daikuan;
        private int index = 0;
        
        public calcutor(){
            
            jpanel = new JPanel();
            jpanel.setBounds(0, 0, 400, 400);
            jpanel.setLayout(null);
            add(jpanel);
            
            label = new JLabel("计算类型:");
            label.setFont(new Font(null, Font.BOLD, 15));
            label.setBounds(10, 10, 80, 30);
            jpanel.add(label);
            
            label00 = new JLabel("@113wangzekai");
            label00.setFont(new Font(null, Font.BOLD, 15));
            label00.setBounds(260, 320, 200, 30);
            jpanel.add(label00);
            
            label01 = new JLabel("本金:");
            label01.setFont(new Font(null, Font.BOLD, 15));
            label01.setBounds(30, 80, 80, 30);
            jpanel.add(label01);
            
            label02 = new JLabel("年利率%:");
            label02.setFont(new Font(null, Font.BOLD, 15));
            label02.setBounds(30, 130, 80, 30);
            jpanel.add(label02);
            
            label03 = new JLabel("年限:");
            label03.setFont(new Font(null, Font.BOLD, 15));
            label03.setBounds(30, 180, 80, 30);
            jpanel.add(label03);
            
            label04 = new JLabel("定投金额:");
            label04.setFont(new Font(null, Font.BOLD, 15));
            label04.setBounds(30, 230, 80, 30);
            jpanel.add(label04);
            
            label05 = new JLabel("终值:");
            label05.setFont(new Font(null, Font.BOLD, 15));
            label05.setBounds(30, 280, 80, 30);
            jpanel.add(label05);
            
            
            //文本框
            field01 = new JTextField();
            field01.setBounds(120, 80, 150, 30);
            jpanel.add(field01);
            
            field02 = new JTextField();
            field02.setBounds(120, 130, 150, 30);
            jpanel.add(field02);
            
            field03 = new JTextField();
            field03.setBounds(120, 180, 150, 30);
            jpanel.add(field03);
            
            field04 = new JTextField();
            field04.setBounds(120, 230, 150, 30);
            jpanel.add(field04);
            
            field05 = new JTextField();
            field05.setBounds(120, 280, 150, 30);
            jpanel.add(field05);
            
            
            //初始化文本框
            field05.setText("计算所得");
            field05.setEnabled(false);
            
            //计算按钮
            button = new JButton("计算");
            button.setBounds(250, 10, 80, 30);
            button.setFont(new Font(null, Font.BOLD, 15));
            jpanel.add(button);
            //按钮监听
            button.addMouseListener(new MouseAdapter() {
                public void mouseClicked(MouseEvent e){
                    if(index == 0){
                        zhongzhi = fulicalcutor();
                        if(zhongzhi != -1){
                            field05.setText(Double.toString(zhongzhi));
                            field05.setEnabled(true);
                        }
                    }else if(index == 1){
                        zhongzhi = danlicalcutor();
                        if(zhongzhi != -1){
                            field04.setText(Double.toString(zhongzhi));
                            field04.setEnabled(true);
                        }
                    }else if(index == 2){
                        benjin = benjincalcutor();
                        if(benjin != -1){
                            field01.setText(Double.toString(benjin));
                            field01.setEnabled(true);
                        }
                    }else if(index == 3){
                        lilv = lilvcalcutor();
                        if(lilv != -1){
                            field02.setText(Double.toString(lilv));
                            field02.setEnabled(true);
                        }
                    }else if(index == 4){
                        nianxian = nianxiancalcutor();
                        if(nianxian != -1){
                            field03.setText(Double.toString(nianxian));
                            field03.setEnabled(true); 
                        }
                    }else if(index == 5){
                        huankuan = yuehuankuanejisuan();
                        if(huankuan != -1){
                            field04.setText(Double.toString(huankuan));
                            field04.setEnabled(true);
                        }
                    }
                }
            });
            
            //下拉菜单
            box = new JComboBox<>();
            box.setFont(new Font(null, Font.BOLD, 15));
            box.setModel(new DefaultComboBoxModel<Object>(new Object[]{"复利计算","单利计算","本金计算","利率计算","年限计算","月还款额计算"}));
            box.setBounds(90, 10, 130, 30);
            jpanel.add(box);
            box.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e) {
                    if(box.getSelectedIndex()==0){
                        index = 0;
                        change01();
                        clear();
                        field05.setText("计算所得");
                        field05.setEnabled(false);
                        //System.out.println("复利计算");
                    }else if(box.getSelectedIndex()==1){
                        index = 1;
                        change();
                        clear();
                        field04.setText("计算所得");
                        field04.setEnabled(false);
                        //System.out.println("单利计算");
                    }else if(box.getSelectedIndex()==2){
                        index = 2;
                        change();
                        clear();
                        field01.setText("计算所得");
                        field01.setEnabled(false);
                        //System.out.println("本金计算");
                    }else if(box.getSelectedIndex()==3){
                        index = 3;
                        change();
                        clear();
                        field02.setText("计算所得");
                        field02.setEnabled(false);
                        //System.out.println("利率计算");
                    }else if(box.getSelectedIndex()==4){
                        index = 4;
                        change();
                        clear();
                        field03.setText("计算所得");
                        field03.setEnabled(false);
                    }else if(box.getSelectedIndex()==5){
                        index = 5;
                        change02();
                        clear();
                        field04.setText("计算所得");
                        field04.setEnabled(false);
                    }
                }
    
    
            });
        }
    
        //清除数据
        private void clear() {
            field01.setText(null);
            field02.setText(null);
            field03.setText(null);
            field04.setText(null);
            field05.setText(null);
            field01.setEnabled(true);
            field02.setEnabled(true);
            field03.setEnabled(true);
            field04.setEnabled(true);
            field05.setEnabled(true);
        }
        
        //改变内容
        private void change02() {
            label01.setText("贷款金额:");
            label02.setText("年利率%:");
            label03.setText("还款期限:");
            label04.setText("月还款额:");
            label05.setText("");
            field05.setVisible(false);
        }
        private void change01() {
            label01.setText("本金:");
            label02.setText("年利率%:");
            label03.setText("年限:");
            label04.setText("定投金额:");
            label05.setText("终值:");
            field05.setVisible(true);
        }
        private void change() {
            label01.setText("本金:");
            label02.setText("年利率%:");
            label03.setText("年限:");
            label04.setText("终值:");
            label05.setText("");
            field05.setVisible(false);
        }
        
        //月还款额计算
        private double yuehuankuanejisuan() {
            try {
                daikuan = Double.parseDouble(field01.getText());
                lilv = Double.parseDouble(field02.getText());
                nianxian = Double.parseDouble(field03.getText());
                
                //小于或等于0的处理
                if(daikuan <= 0 || lilv <= 0 || nianxian <= 0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return yuehuankuan(daikuan,lilv,nianxian);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
            return -1;
            
        }
        //月还款额的计算公式
        public final double yuehuankuan(double daikuan, double lilv, double nianxian) {
            huankuan = daikuan * (lilv/12) * Math.pow( 1 + lilv/12 ,12 * nianxian)/(Math.pow(1 + lilv/12, 12 * nianxian)-1);
            huankuan = Math.round(huankuan*100)/100;
            return huankuan;
        }
        
        //年限计算
        private double nianxiancalcutor() {
            try {
                zhongzhi = Double.parseDouble(field04.getText());
                lilv = Double.parseDouble(field02.getText());
                benjin = Double.parseDouble(field01.getText());
                
                //小于或等于0的处理
                if(zhongzhi<=0 || lilv<=0 || benjin<=0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return nianxian(zhongzhi,lilv,benjin); 
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
            return -1;
        }
        //年限的计算公式
        public final double nianxian(double zhongzhi, double lilv, double benjin) {
            nianxian = (Math.log(zhongzhi / benjin) / Math.log(1 + lilv));
            nianxian = Math.round(nianxian);
            return nianxian;
        }
    
        //利率计算
        private double lilvcalcutor() {
            try {
                zhongzhi = Double.parseDouble(field04.getText());
                nianxian = Double.parseDouble(field03.getText());
                benjin = Double.parseDouble(field01.getText());
                
                //小于或等于0的处理
                if(zhongzhi <= 0 || benjin <= 0 || nianxian <= 0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return lilv(zhongzhi,nianxian,benjin);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
            return -1; 
        }
        //利率的计算公式
        public final double lilv(double zhongzhi, double nianxian, double benjin) {
            lilv = Math.pow((zhongzhi / benjin), (1.0 / nianxian)) - 1;
            lilv = Math.round(lilv*100)/100.0;
            return lilv;
        }
        
        //本金计算
        private double benjincalcutor() {
            try {
                zhongzhi = Double.parseDouble(field04.getText());
                lilv = Double.parseDouble(field02.getText());
                nianxian = Double.parseDouble(field03.getText());
                
                //小于或等于0的处理
                if(zhongzhi <= 0 || lilv <= 0 || nianxian <= 0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return benjin(zhongzhi,lilv,nianxian);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
            return -1;
        }
        //本金的计算公式
        public final double benjin(double zhongzhi, double lilv, double nianxian) {
            benjin = zhongzhi / (Math.pow(1 + lilv, nianxian));
            benjin = Math.round(benjin*100)/100; 
            return benjin;
        }
    
        //单利计算
        private double danlicalcutor() {
            try {
                benjin = Double.parseDouble(field01.getText());
                lilv = Double.parseDouble(field02.getText());
                nianxian = Double.parseDouble(field03.getText());
                
                //小于或等于0的处理
                if(benjin<=0 || lilv<=0 || nianxian<=0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return zhongzhi(benjin, lilv, nianxian);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
            return -1;
            
        }
        //单利的计算公式
        public final double zhongzhi(double benjin, double lilv, double nianxian) {
            zhongzhi = benjin * (1 + lilv * nianxian);
            zhongzhi = Math.round(zhongzhi*100)/100; 
            return zhongzhi;
        }
    
        //复利计算
        private double fulicalcutor() {
            try {
                benjin = Double.parseDouble(field01.getText());
                lilv = Double.parseDouble(field02.getText());
                nianxian = Double.parseDouble(field03.getText());
                try {
                    dingtou = Double.parseDouble(field04.getText());
                    } catch (NumberFormatException e2) {
                        dingtou = 0;
                }
                
                //小于或等于0的处理
                if(benjin<=0 || lilv<=0 || nianxian<=0){
                    JOptionPane.showMessageDialog(jpanel, "你输入的数据不能小于或等于零
    "
                            + "               请重新输入");
                }else{
                    return zhongzhi(benjin, lilv, nianxian, dingtou);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(jpanel, "请输入正确的数据");
                //System.out.println("请输入数据");
            }
    
            return -1;
        }
        //复利的计算公式
        public final double zhongzhi(double benjin, double lilv, double nianxian,
                double dingtou) {
            for(int i = 0;i < nianxian;i++){
                benjin = benjin * (1 + lilv);
                benjin = benjin + dingtou;
            }
            zhongzhi = benjin - dingtou;
            zhongzhi = Math.round(zhongzhi*100)/100;
            return zhongzhi;
        }
    
    }

  • 相关阅读:
    Labshare 生物信息学在线软件集锦
    为什么要给单个细胞测序?
    两行代码解决Android9.0 CLEARTEXT communication not supported: [ConnectionSpec...
    Android 网络框架:Retrofit2一篇就够了(2020-4-23)
    Android通用流行框架大全
    base64图片裁剪空白区域
    常用的几款抓包工具
    Message: 'chromedriver' executable needs to be in PATH
    nginx+lua+redis做访问鉴权
    win10安装markdownpad2打开显示错误this view has crashed!
  • 原文地址:https://www.cnblogs.com/wangzekai/p/5335851.html
Copyright © 2011-2022 走看看