Java仿windows计算器的小程序,下面是率真上进的可乐给大家的分享,一起来看看。
java贷款计算器
也记不得是自己写的还是抄的了,现在分享出来
封面效果
主页面package com.company;import java.awt.*;import java.awt.event.*;import java.util.Arrays;import javax.swing.*;/** * 主页面 */public class MathFrame extends JFrame {private static final long serialVersionUID = 10086L;//存储功能键系列字符String[] mOp={"MC", "MR", "MS", "M+"};//清除键系列字符String[] rOp={"Backspace", "CE", "C"};//数字和计算键字符String[] nOp={"7", "8", "9", "/", "sqrt", "4", "5", "6","*", "%", "1", "2", "3", "-", "1/x", "0", "+/-",".", "+", "="};//显示文本框JTextField mathField ;//存储按钮JTextField mField;//键盘监听KeyListener keyListener;/** * 整个界面事件监听 */ActionListener actionListener;/** * 构造方法 */public MathFrame() {super();setTitle("计算器");setResizable(true);try {UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());} catch (Exception e) {e.printStackTrace();}setBounds(100, 100, 260, 200);position();}/** * 外观布局 */public void position() {add(getJTextField(), BorderLayout.NORTH);addKeyListener(getKeyListener());//添加左侧模板JPanel pane1 = new JPanel();//设置布局pane1.setLayout(new GridLayout(5, 1, 0, 5));//存储功能键JButton[] mButton = null;mButton = getMButton();//存储标记pane1.add(getmField());//添加for (JButton b : mButton) {pane1.add(b);}//添加中上部位模板JPanel pane21 = new JPanel();pane21.setLayout(new GridLayout(1, 3, 3, 5));JButton[] rButton = getRButton();for (JButton b : rButton)pane21.add(b);//数字键,功能键JPanel pane22 = new JPanel();pane22.setLayout(new GridLayout(4, 5, 3, 3));JButton[] nButton = getNButton();for (JButton b : nButton)pane22.add(b);//布局JPanel pane2 = new JPanel();pane2.setLayout(new BorderLayout());pane2.add(pane21, BorderLayout.NORTH);pane2.add(pane22, BorderLayout.CENTER);add(pane1, BorderLayout.WEST);add(pane2, BorderLayout.CENTER);}/** * 给各按钮设置监听 * @return ActionListener 监听 */private ActionListener getTheListener() {if (actionListener == null)actionListener = new ActionListener() {public void actionPerformed(ActionEvent e) {String cmd = e.getActionCommand();String text = mathField.getText();text = MathServer.server(cmd, text);//设置存储标记if (cmd.equals("MC")) {mField.setText("");} else if (cmd.indexOf("M")!=-1&& MathServer.getStore() != 0)mField.setText("M");if (!MathServer.getIsRun()) {Toolkit tk = Toolkit.getDefaultToolkit();tk.beep();}if (text == null)text= "0.";else if (text.indexOf(".") == -1)text = text+ ".";mathField.setText(text);}};return actionListener;}/** * 键盘监听 * @return KeyListener 键盘输入 */private KeyListener getKeyListener() {return new KeyListener() {public void keyPressed(KeyEvent e) {System.out.println(e.getKeyChar());String cmd = "";String text = mathField.getText();char c = e.getKeyChar();if ((c>='0'&& c<='9')|| c=='+'|| c=='-'|| c=='='|| c=='*'||c=='/'|| c=='.') {cmd = ""+c;} else if (c == KeyEvent.VK_ENTER) {cmd = "=";} else if (c == KeyEvent.VK_BACK_SPACE) {cmd = "Backspace";} else if (c == KeyEvent.VK_ESCAPE) {cmd = "C";} else if (c == KeyEvent.VK_S) {cmd = "sqrt";}text = MathServer.server(cmd, text);if (!MathServer.getIsRun()) {Toolkit tk = Toolkit.getDefaultToolkit();tk.beep();}if (text == null)text= "0.";else if (text.indexOf(".") == -1)text = text+ ".";mathField.setText(text);}public void keyReleased(KeyEvent e) {}public void keyTyped(KeyEvent e) {}};}/** * 数字、运算符号按钮排列 * @return java.swing.JButton[] */private JButton[] getNButton() {String[] sign = {"/","*","-","+","="};JButton[] button = new JButton[nOp.length];for (int i=0; i<nOp.length; i++) {JButton b = new JButton(nOp[i]);b.setMargin(new Insets(0, 0, 0, 0));b.addActionListener(getTheListener());b.setFocusable(false);Arrays.sort(sign);if (Arrays.binarySearch(sign, nOp[i])>=0) {b.setForeground(Color.red);} else b.setForeground(Color.blue);button[i]= b;}return button;}/** * 清除按钮排列 * @return java.swing.JButton[] */private JButton[] getRButton() {JButton[] button = new JButton[rOp.length];for (int i=0; i<rOp.length; i++) {JButton b = new JButton(rOp[i]);b.setForeground(Color.red);b.setMargin(new Insets(3, 0, 3, 0));b.setFocusable(false);b.addActionListener(getTheListener());button[i] = b;}return button;}/** * 存储按钮排列 * @return java.swing.JButton[] */private JButton[] getMButton() {JButton[] button = new JButton[mOp.length] ;for (int i=0; i<mOp.length; i++) {JButton b = new JButton(mOp[i]);b.setForeground(Color.red);b.setMargin(new Insets(7, 7, 7, 7));b.setFocusable(false);b.addActionListener(getTheListener());button[i] = b;}return button;}/** * 存储标记 * @return java.swing.JTextField */private JTextField getmField() {if (mField == null)mField = new JTextField();mField.setEditable(false);mField.setHorizontalAlignment(JTextField.CENTER);mField.setColumns(1);mField.setMargin(new Insets(0, 0, 0, 0));mField.setFocusable(false);return mField;}/** * 文本框 * @return java.swing.JTextField */private JTextField getJTextField() {mathField = new JTextField();//设置不可编辑mathField.setEditable(false);mathField.setFocusable(false);mathField.setBackground(Color.white);//设置文件对其方式mathField.setHorizontalAlignment(JTextField.RIGHT);//默认文本mathField.setText("0.");return mathField;}public static void main(String args[]) {MathFrame f = new MathFrame();f.setVisible(true);f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}计算类package com.company;import java.math.BigDecimal;import java.math.RoundingMode;/** * 计算类 * */public class Mymath {final static int SCALE = 10;/** * 加法运算 * @param first * 被操作数 * @param second * 操作数 * @return 加法结果 */public static double add(double first, double second) {BigDecimal one = getBigDecimal(first);BigDecimal two = getBigDecimal(second);return one.add(two).doubleValue();}/** * 创建BigDecimal对象 * @param num * 要转化的参数 * @return java.math.BigDecimal */private static BigDecimal getBigDecimal(double num) {return new BigDecimal(num);}/** * 乘法运算 * @param first * 被操作数 * @param second * 操作数 * @return 乘法结果 */public static double multiply(double first, double second) {BigDecimal one = getBigDecimal(first);BigDecimal two = getBigDecimal(second);return one.multiply(two).doubleValue();}/** * 减法运算 * @param first * 被操作数 * @param second * 操作数 * @return 减法结果 */public static double subtract(double first, double second) {BigDecimal one = getBigDecimal(first);BigDecimal two = getBigDecimal(second);return one.subtract(two).doubleValue();}/** * 除法运算 * @param first * 被操作数 * @param second * 操作数 * @return 除法结果 */public static double pide(double first, double second) {BigDecimal one = getBigDecimal(first);BigDecimal two = getBigDecimal(second);return one.pide(two, SCALE, RoundingMode.HALF_UP).doubleValue();}}计算服务类package com.company;public class MathServer {//数字集private static final String NUM = "1234567890.";//运算符号集private static final String SYS = "+-*/=";//计算器需记录的数private static String shift = null;//现在正在处理的数private static String now = null;//存储功能存储的数private static double store = 0;//是否改变正处理数private static boolean cutNow = false;//记录的预算符号private static String symbol = null;//是否正确运行private static boolean isRun = true;//是否动用除特殊预算外的服务private static boolean isM = false;/** * 后台服务 * @param cmd * 用户的按键信息 * @param text * 按键时现实屏上的显示数 * @return String 结果输出 */public static String server(String cmd, String text) {if (cmd.equals("C")) {return clearAll();} else if (cmd.equals("CE")) {return clear();} else if (!isRun) {return text;} else if (cmd.equals("Backspace")) {return back();} else if (cmd.equals("+/-")) {return negative();} else if (SYS.indexOf(cmd) != -1) {return cat(cmd);} else if (NUM.indexOf(cmd) != -1) {return catNum(cmd);} else if (cmd.equals("%")) {return percent();} else if (cmd.equals("sqrt")) {return sqrt();} else if (cmd.equals("1/x")) {return reciprocal();} else return mRun(cmd);}private static String mRun(String cmd) {isM = true;if (now == null)now = "0";if (cmd.equals("MC")) {store = 0;} else if (cmd.equals("MR")) {return Double.toString(store);} else if (cmd.equals("MS")) {store = Double.valueOf(now);} else {store += Double.valueOf(now);}return now;}/** * 输入数字时所作的相关处理 * @param cmd * 用户正在输入的数字 * @param text * 显示屏上的原有显示数 * @return String 处理后的显示屏数 */private static String catNum(String cmd) {if (isM) {now = null;isM = false;}if (cutNow) {shift = now;now = null;cutNow = false;}if (cmd.equals(".")) {if (now == null) {now = "0.";} else if (now.indexOf(".") != -1) {} else now += cmd;} else if (now == null || now.equals("0")) {now = cmd;} else now += cmd;return now;}/** * 求负数 * @param text * 操作数 * @return 负数结果 */private static String negative() {if (now == null)now = "0";now = cal(now, "*", "-1");return now;}/** * 求百分数 * @param text * 操作数 * @return 百分结果 */private static String percent() {isM = true;shift = cal(shift, "/", "10");now = cal(now, "/", "10");now = cal(shift, "*", now);return now;}/** * 求倒数 * @param text * 操作数 * @return 倒数结果 */private static String reciprocal() {isM = true;now = cal("1", "/", now);return now;}/** * 求开方 * @param text * 操作数 * @return 开方值 */private static String sqrt() {isM = true;if (Double.valueOf(now) < 0) {isRun = false;return "函数输入无效";}now = Double.toString(Math.sqrt(Double.valueOf(now)));return now;}/** * 输入运算符号时以进行的服务 * @param cmd * 用户当前输入的符号 * @return String 计算结果 */private static String cat(String cmd) {if (isM) {isM = false;}//输入+-*/时if (!cmd.equals("=")) {if (symbol == null) {shift = now;symbol = cmd;cutNow = true;} else if (now == null) {//无被操作数if (shift == null) {shift = "0";symbol = cmd;cutNow = true;} else {symbol = cmd;cutNow = true;}}else {now = cal(shift, symbol, now);symbol = cmd;cutNow = true;}//输入=号} else if (symbol == null) {cutNow = true;} else if (now == null) {now = shift;now = cal(shift, symbol, now);symbol = null;cutNow = true;} else {now = cal(shift, symbol, now);cutNow = true;symbol = null;}return now;}/** * 运算方法 * @return String 返回的结果 */private static String cal(String sh, String sym, String text) {//除数的0if (sym.equals("/") && text.equals("0")) {isRun = false;//被除数和除数都得零if (sh.equals("0")) {return "函数结果未定义。";} else {return "除数不能为零。";}}if (sym.equals("+")) {return Double.toString(Mymath.add(Double.valueOf(sh), Double.valueOf(text)));} else if (sym.equals("-")) {return Double.toString(Mymath.subtract(Double.valueOf(sh), Double.valueOf(text)));} else if (sym.equals("*")) {return Double.toString(Mymath.multiply(Double.valueOf(sh), Double.valueOf(text)));} else {return Double.toString(Mymath.pide(Double.valueOf(sh), Double.valueOf(text)));}}/** * 返回存储数 * @return double 存储数 */public static double getStore() {return store;}/** * 退格功能 * @return String 返回结果 */private static String back() {if (cutNow || isM) {isRun = false;}else if (now == null) {now = null;} else if (now.length() == 1) {now = "0";} else {now = now.substring(0, now.length()-1);}return now;}/** * 清除当前数 * @return String 无 */private static String clear() {isRun = true;now = null;return now;}/** * 全部清除 * @return String 无 */private static String clearAll() {isRun = true;shift = null;now = null;symbol = null;return now;}/** * 确定是否正确运行 * @return boolean */public static boolean getIsRun() {return isRun;}}
贷款精灵计算器
银行从业《个人贷款》和《个人理财》科目中,系统都嵌入了“理财计算器”,虽然考试系统中增加了对理财计算器的使用说明,但是考试时间只有2个小时,考试时间紧张,大家很少能静下心来仔细阅读。
与其等到考场上再详细了解,不如趁平时彻底掌握“理财计算器”的使用方法。
下面针对考试的常见计算题型,小希通过一个经典例题,给大家讲解一下“理财计算器”的使用方法。

例题
王女士有30万元的储蓄存款,她打算投资一款五年期的理财产品可以累积到120万元,现有一款年收益率为10%的理财产品,按月计息,为了满足王女士120万的需求,王女士每月还应定期投资()元?
分析:
这道题求的是每月投资额,也就是年金。计算时候需将年利率和期数换算成以月为单位,也就是用10%除以12,5年乘以12。30万存款为现值,现金流流出为负。120万为终值,对应将这些数字填入理财计算器中,勾选期末,最后计算得出答案-0.9123。
总结:
1、利率(%):输入“10/12”,计算得出0.8333,最终填入的的数字为0.8333。
2、期数:输入数字时点击前面“□”,出现“√”即为选中,这时输入“5/12”,计算得出60,最终填入的数字为60。
3、现值:填入数字-30。
4、终值:填入数字120。
5、勾选期末,最后计算出结果为-0.9123。
通过以上步骤,考生考《个人理财》科目时,就可以用理财计算器,快速算出答案啦!
温馨提示:注:内容来源均采集于互联网,不要轻信任何,后果自负,本站不承担任何责任。若本站收录的信息无意侵犯了贵司版权,请给我们来信,我们会及时处理和回复。
原文地址"java贷款计算器(贷款精灵计算器)":http://www.ljycsb.cn/dkzs/126533.html。
微信扫描二维码投放广告
▲长按图片识别二维码