1.0 2.0 3.0复利计算器
package ch; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.NumberFormat; import javax.swing.AbstractButton; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; public class fuli extends JFrame { private JLabel a1; private JLabel a2; private JLabel a3; private JLabel a4; private JTextField b1; private JTextField b2; private JTextField b3; private JTextField b4; private JButton c1; private JButton c2; private JTextArea text; private JPanel toolbar = new JPanel(); private AbstractButton mrButton; public fuli() { creatComponents() ; layoutComponents(); registerHandlers(); setTitle("复利存款计算器"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); } private void creatComponents() { a1=new JLabel("本 金 "); a1.setFont(new Font("宋体",Font.BOLD,18)); a2=new JLabel("年利率 "); a2.setFont(new Font("宋体",Font.BOLD,18)); a3=new JLabel("年 数 "); a3.setFont(new Font("宋体",Font.BOLD,18)); a4=new JLabel("期望值 "); a4.setFont(new Font("宋体",Font.BOLD,18)); b1=new JTextField(10); b2=new JTextField(10); b3=new JTextField(10); b4=new JTextField(10); c1=new JButton("计算"); c1.setFont(new Font("宋体",Font.BOLD,15)); c2=new JButton("清除"); c2.setFont(new Font("宋体",Font.BOLD,15)); text=new JTextArea(); } private void layoutComponents() { setLayout(new FlowLayout()); JPanel panel1=new JPanel(); panel1.add(a1); panel1.add(b1); JPanel panel2=new JPanel(); panel2.add(a2); panel2.add(b2); JPanel panel3=new JPanel(); panel3.add(a3); panel3.add(b3); JPanel panel4=new JPanel(); panel4.add(c1); panel4.add(c2); JPanel panel6=new JPanel(); panel6.add(a4); panel6.add(b4); JPanel leftpanel=new JPanel(new GridLayout(4,1)); leftpanel.add(panel1); leftpanel.add(panel2); leftpanel.add(panel3); leftpanel.add(panel4); leftpanel.add(panel6); JScrollPane panel5=new JScrollPane(text); panel5.setPreferredSize(new Dimension(400,150)); add(leftpanel); add(panel5); } private void registerHandlers() { c1ActionEventHander hander1 = new c1ActionEventHander(); c1.addActionListener(hander1); c2ActionEventHander hander2 = new c2ActionEventHander(); c2.addActionListener(hander2); } private class c1ActionEventHander implements ActionListener { public void actionPerformed(ActionEvent e) { double principal; double amount; double rate; int n; NumberFormat currencyformatter = NumberFormat.getCurrencyInstance(); String output = "年" + "/" + "复利存款"; int year = 1; if (b1.getText().equals("")&& b2.getText() != null && b3.getText() != null && b4.getText() != null) { rate = Double.parseDouble(b2.getText()); n = Integer.parseInt(b3.getText()); amount = Double.parseDouble(b4.getText()); principal = 0; while (year <= n) { principal = amount / (Math.pow(1 + rate, year)); year = year + 1; } output = "本金" + currencyformatter.format(principal) + "\n"; text.setText(output); } else if (b2.getText().equals("") && b1.getText() != null && b3.getText() != null && b4.getText() != null) { principal = Double.parseDouble(b1.getText()); rate =0; n = Integer.parseInt(b3.getText()); amount = Double.parseDouble(b4.getText()); rate = java.lang.StrictMath.pow(amount / principal, 1.0 / n) - 1; output = "利率" + rate + "\n"; text.setText(output); } else if (b3.getText().equals("") && b1.getText() != null && b2.getText() != null && b4.getText() != null) { principal = Double.parseDouble(b1.getText()); amount = Double.parseDouble(b4.getText()); rate = Double.parseDouble(b2.getText()); int n2=1; while(principal<amount){ principal=principal * Math.pow(1 + rate, n2); n2+=1; } output = "至少年数" + n2+"\n"; text.setText(output); } else if (b4.getText().equals("") && b1.getText() != null && b3.getText() != null && b2.getText() != null) // 求期望值 { rate = Double.parseDouble(b2.getText()); n = Integer.parseInt(b3.getText()); principal = Double.parseDouble(b1.getText()); // b1本金 while (year <= n) { amount = principal * Math.pow(1 + rate, year); output += String.valueOf(year) + "\t\t\t" + currencyformatter.format(amount) + "\n"; year = year + 1; } text.setText(output); } } } private class c2ActionEventHander implements ActionListener { public void actionPerformed(ActionEvent e) { b1.setText(""); b2.setText(""); b3.setText(""); text.setText(""); } } public static void main(String[] args) { fuli frame=new fuli(); frame.setVisible(true); int Windowswidth = 500; int Windowsheight = 400; int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; frame.setResizable(false); frame.setLocation((width - Windowswidth) / 2, (height - Windowsheight) / 2); // 窗口居中 } }
所用语言与工具:Java
代码行:251行
工作量(人时):3个小时
计算还不能进行,做出了初步的框架。鼠标键盘监听没弄出来,导致按键无效。经过这两个星期的学习,发现知识点基本都是差不多的,计算公式的不同,导致了结果的不同