• 复利计算4


      1 package Fuli;
      2 
      3 
      4 import java.awt.BorderLayout;
      5 import java.awt.Dimension;
      6 import java.awt.FlowLayout;
      7 import java.awt.GridLayout;
      8 import java.awt.Toolkit;
      9 import java.awt.event.ActionEvent;
     10 import java.awt.event.ActionListener;
     11 import java.text.NumberFormat;
     12 
     13 import javax.swing.JButton;
     14 import javax.swing.JFrame;
     15 import javax.swing.JLabel;
     16 import javax.swing.JOptionPane;
     17 import javax.swing.JPanel;
     18 import javax.swing.JRadioButtonMenuItem;
     19 import javax.swing.JScrollPane;
     20 import javax.swing.JTextArea;
     21 import javax.swing.JTextField;
     22 
     23 public class Fuli4 extends JFrame {
     24 
     25     private static final long serialVersionUID = 3347254632537686808L;
     26     private JLabel a1; // 标签
     27     private JLabel a2;
     28     private JLabel a3;
     29     private JLabel a4;
     30     private JTextField b1; // 本金
     31     private JTextField b2; // 利率
     32     private JTextField b3; // 年份
     33     private JTextField b4; // 期望值
     34     private JButton c1;
     35     private JButton c2;
     36     private JButton c3;
     37 
     38     private JTextArea text; // 显示纯文本的多行区域
     39 
     40     private JPanel toolbar = new JPanel();
     41 
     42     private JPanel toolbar2 = new JPanel();
     43     boolean isadd = false;
     44     JRadioButtonMenuItem mrButton = new JRadioButtonMenuItem("每年添加一定的本金");
     45 
     46     public Fuli4() {
     47         setTitle("复利存款应用程序");
     48         creatComponents(); // 创建零件
     49         layoutComponents(); // 设计零件
     50         registerHandlers(); // 鼠标监控
     51         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     52         pack();
     53     }
     54 
     55     private void creatComponents() {
     56         a1 = new JLabel("本 金 ");
     57         a2 = new JLabel("年利率 ");
     58         a3 = new JLabel("年 数 ");
     59         a4 = new JLabel("期望值");
     60         b1 = new JTextField(10);
     61         b2 = new JTextField(10);
     62         b3 = new JTextField(10);
     63         b4 = new JTextField(10);
     64         c1 = new JButton("复利");
     65         c2 = new JButton("清除");
     66         c3 = new JButton("单利");
     67         text = new JTextArea();
     68 
     69     }
     70 
     71     private void layoutComponents() {
     72         setLayout(new FlowLayout());
     73         JPanel panel1 = new JPanel();
     74         panel1.add(a1);
     75         panel1.add(b1);
     76         JPanel panel2 = new JPanel();
     77         panel2.add(a2);
     78         panel2.add(b2);
     79         JPanel panel3 = new JPanel();
     80         panel3.add(a3);
     81         panel3.add(b3);
     82         JPanel panel6 = new JPanel();
     83         panel6.add(a4);
     84         panel6.add(b4);
     85 
     86         JPanel leftpanel = new JPanel(new GridLayout(3, 1));
     87         leftpanel.add(panel1);
     88         leftpanel.add(panel2);
     89         leftpanel.add(panel3);
     90 
     91         leftpanel.add(panel6);
     92         JScrollPane panel5 = new JScrollPane(text);
     93         panel5.setPreferredSize(new Dimension(400, 200));
     94 
     95         toolbar.add(c1);
     96         toolbar.add(c2);
     97         toolbar.add(c3);
     98         toolbar2.add(mrButton);
     99 
    100         add(leftpanel);
    101         // add(mrButton);
    102         add(toolbar2, BorderLayout.NORTH);
    103         add(panel5);
    104         add(toolbar, BorderLayout.EAST);
    105     }
    106 
    107     private void registerHandlers() {
    108         c1ActionEventHander hander1 = new c1ActionEventHander();
    109         c1.addActionListener(hander1);
    110         c2ActionEventHander hander2 = new c2ActionEventHander();
    111         c2.addActionListener(hander2);
    112         c3ActionEventHander hander3 = new c3ActionEventHander();
    113         c3.addActionListener(hander3);
    114         mrButtonActionEventHander hander4 = new mrButtonActionEventHander();
    115         mrButton.addActionListener(hander4);
    116 
    117     }
    118 
    119     private class c1ActionEventHander implements ActionListener {
    120         public void actionPerformed(ActionEvent e) {
    121             double principal;
    122             double amount;
    123             double rate;
    124             int n;
    125             NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); // 字符串转化为数字
    126             String output = "年" + "/" + "复利存款";
    127             // int year = 1;
    128             //
    129             // // principal = Double.parseDouble(b1.getText()); // b1本金
    130             // rate = Double.parseDouble(b2.getText()); // b2利率
    131             // n = Integer.parseInt(b3.getText()); // b3年份
    132             // amount = Double.parseDouble(b4.getText()); // b4期望值
    133             int year = 1;
    134             // rate = Double.parseDouble(b2.getText());
    135             // n = Integer.parseInt(b3.getText());
    136             int result;
    137             result = JOptionPane.showConfirmDialog(null, "是否每年添加本金");
    138             if (isadd==false) {
    139                 if (b4.getText().equals("") && b1.getText() != null
    140                         && b3.getText() != null && b2.getText() != null) // 求期望值
    141                 {
    142                     rate = Double.parseDouble(b2.getText());
    143                     n = Integer.parseInt(b3.getText());
    144                     principal = Double.parseDouble(b1.getText()); // b1本金
    145                     double tempprincipal=principal;
    146                     while (year <= n) {
    147                         amount = principal * Math.pow(1 + rate, year)+tempprincipal;
    148                         output += String.valueOf(year) + "			"
    149                                 + currencyformatter.format(amount) + "
    ";
    150                         year = year + 1;
    151                     }
    152 
    153                     text.setText(output);
    154                 }
    155                 else if(b1.getText() != null&&b4.getText()!=null
    156                         && b3.getText() != null && b2.getText() != null){
    157                     JOptionPane.showMessageDialog(null, "请删除一个数据");
    158                 }
    159 
    160             } 
    161             else {
    162                 if (b1.getText().equals("") && b2.getText() != null
    163                         && b3.getText() != null && b4.getText() != null) {
    164 
    165                     rate = Double.parseDouble(b2.getText());
    166                     n = Integer.parseInt(b3.getText());
    167                     amount = Double.parseDouble(b4.getText());
    168                     principal = 0;
    169                     while (year <= n) {
    170                         principal = amount / (Math.pow(1 + rate, year));
    171                         year = year + 1;
    172                     }
    173 
    174                     output = "本金" + currencyformatter.format(principal) + "
    ";
    175                     text.setText(output);
    176 
    177                 }
    178 
    179                 else if (b2.getText().equals("") && b1.getText() != null
    180                         && b3.getText() != null && b4.getText() != null) // 求利率
    181                 {
    182                     principal = Double.parseDouble(b1.getText()); // b1本金
    183                     rate = 0;
    184                     n = Integer.parseInt(b3.getText()); // b3年份
    185                     amount = Double.parseDouble(b4.getText()); // b4期望值
    186                     rate = java.lang.StrictMath
    187                             .pow(amount / principal, 1.0 / n) - 1;
    188                     output = "利率" + rate + "
    ";
    189                     text.setText(output);
    190                 }
    191 
    192                 else if (b3.getText().equals("") && b1.getText() != null
    193                         && b2.getText() != null && b4.getText() != null) // 求年份
    194                 {
    195                     principal = Double.parseDouble(b1.getText()); // b1本金
    196                     amount = Double.parseDouble(b4.getText()); // b4期望值
    197                     rate = Double.parseDouble(b2.getText());
    198                     int n2 = 1;
    199                     while (principal < amount) {
    200                         principal = principal * Math.pow(1 + rate, n2);
    201                         n2 += 1;
    202                     }
    203                     output = "至少年数" + n2 + "
    ";
    204                     text.setText(output);
    205                 }
    206 
    207                 else if (b4.getText().equals("") && b1.getText() != null
    208                         && b3.getText() != null && b2.getText() != null) // 求期望值
    209                 {
    210                     rate = Double.parseDouble(b2.getText());
    211                     n = Integer.parseInt(b3.getText());
    212                     principal = Double.parseDouble(b1.getText()); // b1本金
    213                     while (year <= n) {
    214                         amount = principal * Math.pow(1 + rate, year);
    215                         output += String.valueOf(year) + "			"
    216                                 + currencyformatter.format(amount) + "
    ";
    217                         year = year + 1;
    218                     }
    219 
    220                     text.setText(output);
    221                 }
    222                 else if(b1.getText() != null&&b4.getText()!=null
    223                         && b3.getText() != null && b2.getText() != null){
    224                     JOptionPane.showMessageDialog(null, "请删除一个数据");
    225                 }
    226                 else {
    227                     JOptionPane.showMessageDialog(null, "请增加数据");
    228                 }
    229             }
    230         }
    231 
    232     }
    233 
    234     private class c2ActionEventHander implements ActionListener {
    235         public void actionPerformed(ActionEvent e) {
    236             b1.setText("");
    237             b2.setText("");
    238             b3.setText("");
    239             text.setText("");
    240         }
    241     }
    242 
    243     private class c3ActionEventHander implements ActionListener {
    244         public void actionPerformed(ActionEvent e) {
    245             double principal;
    246             double amount;
    247             double rate;
    248             int n;
    249             NumberFormat currencyformatter = NumberFormat.getCurrencyInstance();
    250             String output = "年" + "/" + "单利存款";
    251             int year = 1;
    252             int result;
    253             result = JOptionPane.showConfirmDialog(null, "是否每年添加本金");
    254             if (result == JOptionPane.YES_OPTION) {
    255                 if (b4.getText().equals("") && b1.getText() != null
    256                         && b3.getText() != null && b2.getText() != null) // 求期望值
    257                 {
    258                     rate = Double.parseDouble(b2.getText());
    259                     n = Integer.parseInt(b3.getText());
    260                     principal = Double.parseDouble(b1.getText()); // b1本金
    261                     double tempprincipal=principal;
    262                     while (year <= n) {
    263                         amount = principal * (1 + rate * year)+tempprincipal;
    264                         output += String.valueOf(year) + "			"
    265                                 + currencyformatter.format(amount) + "
    ";
    266                         year = year + 1;
    267                     }
    268 
    269                     text.setText(output);
    270                 }
    271                 else if(b1.getText() != null&&b4.getText()!=null
    272                         && b3.getText() != null && b2.getText() != null){
    273                     JOptionPane.showMessageDialog(null, "请删除一个数据");
    274                 }
    275 
    276             } 
    277             else {
    278                 if (b1.getText().equals("") && b2.getText() != null
    279                         && b3.getText() != null && b4.getText() != null) {       //求本金
    280 
    281                     rate = Double.parseDouble(b2.getText());
    282                     n = Integer.parseInt(b3.getText());
    283                     amount = Double.parseDouble(b4.getText());
    284                     principal = 0;
    285                     while (year <= n) {
    286                         principal = amount / (1 + rate * year);
    287                         year = year + 1;
    288                     }
    289 
    290                     output = "本金" + currencyformatter.format(principal) + "
    ";
    291                     text.setText(output);
    292                 }
    293 
    294                 else if (b2.getText().equals("") && b1.getText() != null
    295                         && b3.getText() != null && b4.getText() != null) // 求利率
    296                 {
    297                     principal = Double.parseDouble(b1.getText()); // b1本金
    298                     rate = 0;
    299                     n = Integer.parseInt(b3.getText()); // b3年份
    300                     amount = Double.parseDouble(b4.getText()); // b4期望值
    301                     rate = (amount/principal-1)/n;
    302                     output = "利率" + rate + "
    ";
    303                     text.setText(output);
    304                 }
    305 
    306                 else if (b3.getText().equals("") && b1.getText() != null
    307                         && b2.getText() != null && b4.getText() != null) // 求年份
    308                 {
    309                     principal = Double.parseDouble(b1.getText()); // b1本金
    310                     amount = Double.parseDouble(b4.getText()); // b4期望值
    311                     rate = Double.parseDouble(b2.getText());
    312                     double n2=(amount/principal-1)/rate;
    313                     double n3=n2;
    314                     n=(int) n2;
    315                     if(n3-n>0){
    316                         n+=1;
    317                     output = "至少年数" + n + "
    ";
    318                     text.setText(output);
    319                     }
    320                     else
    321                     {
    322                         output = "刚好" + n + "年
    ";
    323                         text.setText(output);
    324                     }
    325                 }
    326 
    327                 else if (b4.getText().equals("") && b1.getText() != null
    328                         && b3.getText() != null && b2.getText() != null) // 求期望值
    329                 {
    330                     rate = Double.parseDouble(b2.getText());
    331                     n = Integer.parseInt(b3.getText());
    332                     principal = Double.parseDouble(b1.getText()); // b1本金
    333                     while (year <= n) {
    334                         amount = principal * (1 + rate * year);
    335                         output += String.valueOf(year) + "			"
    336                                 + currencyformatter.format(amount) + "
    ";
    337                         year = year + 1;
    338                     }
    339 
    340                     text.setText(output);
    341                 }
    342                 else if(b1.getText() != null&&b4.getText()!=null
    343                         && b3.getText() != null && b2.getText() != null){
    344                     JOptionPane.showMessageDialog(null, "请删除一个数据");
    345                 }
    346                 else {
    347                     JOptionPane.showMessageDialog(null, "请增加数据");
    348                 }
    349             }
    350 
    351         }
    352     }
    353 
    354     private class mrButtonActionEventHander implements ActionListener {
    355         public void actionPerformed(ActionEvent e) {
    356             if (isadd == false) {
    357                 isadd = true;
    358             }
    359             if (isadd == true) {
    360                 isadd = false;
    361             }
    362 
    363         }
    364     }
    365 
    366     public static void main(String[] args) {
    367 
    368         int Windowswidth = 500;
    369         int Windowsheight = 410;
    370         Fuli4 frame = new Fuli4();
    371         frame.setVisible(true);
    372         frame.setSize(Windowswidth, Windowsheight);
    373         frame.setResizable(false);
    374         int width = Toolkit.getDefaultToolkit().getScreenSize().width;
    375         int height = Toolkit.getDefaultToolkit().getScreenSize().height;
    376         frame.setLocation((width - Windowswidth) / 2,
    377                 (height - Windowsheight) / 2); // 窗口居中
    378     }
    379 }
  • 相关阅读:
    BZOJ_4383_[POI2015]Pustynia_线段树优化建图+拓扑排序
    BZOJ_1492_[NOI2007]货币兑换Cash_CDQ分治+斜率优化
    BZOJ_3073_[Pa2011]Journeys_线段树优化建图+BFS
    BZOJ_2726_[SDOI2012]任务安排_斜率优化+二分
    BZOJ_1406_[AHOI2007]密码箱_枚举+数学
    哈希表(Hash table)
    算法分析方法之平摊分析(Amotized Analysis)
    数据库视图功能的使用
    不基于比较的排序算法:Counting-sort和Radix-sort
    QuickSort(快速排序)的JAVA实现
  • 原文地址:https://www.cnblogs.com/15linzhijie/p/5290811.html
Copyright © 2020-2023  润新知