下面是我和我朋友编写的一个小程序,它们之间可以相互转换。 它们是我们通过参考网上的代码参考得来的。 下面有四个源文件,我都用----------帮你格开了。 ------------------------------------------------------------------------------------------------ //时间转换 import java.awt.BorderLayout; import java.awt.Button; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextArea; import javax.swing.JTextField; import java.awt.Color; import javax.swing.JButton; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Stack; import java.awt.event.ActionEvent; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import java.awt.Font; import java.awt.GridLayout; public class Calculator_Time extends JFrame implements ActionListener { private final String[] KEYS = { "7", "8", "9", "4", "5", "6", "1", "2", "3", "0", ".", "=",}; /** 计算器上的功能键的显示名字 final p86*/ private final String[] COMMAND = { "Backspace", "CE", "C" }; /** 计算器左边的M的显示名字 */ private final String[] M = {"小时化分钟","分钟化小时", "分钟化秒","秒化分钟","秒化小时","小时化秒", }; /** 计算器上键的按钮 */ private JButton keys[] = new JButton[KEYS.length]; /** 计算器上的功能键的按钮 */ private JButton commands[] = new JButton[COMMAND.length]; /** 计算器左边的M的按钮 */ private JButton m[] = new JButton[M.length]; /** 计算结果文本框 */ private JTextField resultText = new JTextField("0"); // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true; // 计算的中间结果。 private double resultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 private boolean operateValidFlag = true; StringBuffer sb = new StringBuffer(); // 存储输入的数字 String vl = null; // 存储事件点击的字符 //标准型计算器 public Calculator_Time() { setTitle("标准型"); // 初始化计算器 super p114 // 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); this.setTitle("计算器"); // 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); // 不许修改计算器的大小 this.setSize(600, 400); this.setResizable(false); // 使计算器中各组件大小合适 //使这个外部容器自动调整成刚好装下这几个按钮的大小的尺寸。 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu menu = new JMenu("功能"); menuBar.add(menu); JMenuItem menuItem = new JMenuItem("标准型"); menu.add(menuItem); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Calculate_Ordinary ordinary = new Calculate_Ordinary(); ordinary.setVisible(true); } }); JMenuItem menuItem_1 = new JMenuItem("科学型"); menuItem_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Science science = new Calculator_Science(); science.setVisible(true); } }); menu.add(menuItem_1); JMenuItem menuItem_2 = new JMenuItem("时间换算"); menu.add(menuItem_2); JMenu menu_1 = new JMenu("关于"); menuBar.add(menu_1); JMenuItem menuItem_4 = new JMenuItem("使用帮助"); menu_1.add(menuItem_4); JMenuItem menuItem_5 = new JMenuItem("关于作者"); menu_1.add(menuItem_5); menuItem_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Author calculator_Author = new Calculator_Author(); calculator_Author.setVisible(true); } }); resultText.setHorizontalAlignment(JTextField.RIGHT); // 设置文本框背景颜色为白色 resultText.setBackground(Color.white); resultText.setFont(new Font("TimesRoman",Font.BOLD,46)); // 初始化计算器上键的按钮,将键放在一个画板内 JPanel calckeysPanel = new JPanel(); calckeysPanel.setLayout(new GridLayout(4, 3, 3, 3)); for (int i = 0; i < KEYS.length; i++) { keys[i] = new JButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.white); keys[i].setBackground(Color.DARK_GRAY); keys[i].setFont(new Font("Courir",Font.PLAIN,20)); } // 运算符键用红色标示,其他键用黑色表示 // 初始化功能键,都用红色标示。将功能键放在一个画板内 JPanel commandsPanel = new JPanel(); // 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); for (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setBackground(Color.white); commands[i].setForeground(Color.DARK_GRAY); commands[i].setFont(new Font("Courir",Font.PLAIN,20)); } // 初始化M键,用红色标示,将M键放在一个画板内 JPanel calmsPanel = new JPanel(); // 用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calmsPanel.setLayout(new GridLayout(3, 2, 3, 3)); for (int i = 0; i < M.length; i++) { m[i] = new JButton(M[i]); m[i].setBackground(Color.white); calmsPanel.add(m[i]); } // 下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部, // 将文本框放在北部,将calms画板放在计算器的西部。 // 新建一个大的画板,将上面建立的command和calckeys画板放在该画板内 JPanel panel1 = new JPanel(); // 画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素 panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", commandsPanel); panel1.add("Center", calckeysPanel); panel1.add("East",calmsPanel); // 建立一个画板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText); // 整体布局 getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); // 为各按钮添加事件侦听器 // 都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener for (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } for (int i = 0; i < COMMAND.length; i++) { commands[i].addActionListener(this); } for (int i = 0; i < M.length; i++) { m[i].addActionListener(this); } } //添加事件点击 public void actionPerformed(ActionEvent e) { // 获取事件源的标签 String label = e.getActionCommand(); if (label.equals(COMMAND[0])) { // 用户按了"Backspace"键 handleBackspace(); } else if (label.equals(COMMAND[1])) { // 用户按了"CE"键 resultText.setText("0"); } else if (label.equals(COMMAND[2])) { // 用户按了"C"键 handleC(); } else if ("0123456789.".indexOf(label) >= 0) { // 用户按了数字键或者小数点键 handleNumber(label); // handlezero(zero); } else { // 用户按了运算符键 handleOperator(label); } } /** * 处理Backspace键被按下的事件 */ private void handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) { // 退格,将文本最后一个字符去掉 text = text.substring(0, i - 1); if (text.length() == 0) { // 如果文本没有了内容,则初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } else { // 显示新的文本 resultText.setText(text); } } } /** * 处理数字键被按下的事件 * * @param key */ private void handleNumber(String key) { if (firstDigit) { // 输入的第一个数字 resultText.setText(key); } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) { // 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) { // 如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key); } // 以后输入的肯定不是第一个数字了 firstDigit = false; } /** * 处理C键被按下的事件 */ private void handleC() { // 初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } /** * 处理运算符键被按下的事件 * * @param key */ private void handleOperator(String key) { if (operator.equals("小时化分钟")) { // 除法运算 // 如果当前结果文本框中的值等于0 if (getNumberFromText() == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum =60* getNumberFromText(); } } else if (operator.equals("秒化分钟")) { // 倒数运算 if (resultNum == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("零没有倒数"); } else { resultNum = resultNum/60; } } else if (operator.equals("+")) { // 加法运算 resultNum = 60*getNumberFromText(); } else if (operator.equals("秒化小时")) { // 减法运算 resultNum = getNumberFromText()/3600; } else if (operator.equals("分钟化小时")) { // 乘法运算 resultNum = getNumberFromText()/60; } else if (operator.equals("小时化秒")) { // 平方根运算 resultNum =3600*getNumberFromText() ; } else if (operator.equals("分钟化秒")) { // 百分号运算,除以100 resultNum = resultNum *60; } else if (operator.equals("+/-")) { // 正数负数运算 resultNum = resultNum * (-1); } else if (operator.equals("=")) { // 赋值运算 resultNum = getNumberFromText(); } if (operateValidFlag) { // 双精度浮点数的运算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { resultText.setText(String.valueOf(t1)); } else { resultText.setText(String.valueOf(resultNum)); } } // 运算符等于用户按的按钮 operator = key; firstDigit = true; operateValidFlag = true; } /** * 从结果文本框中获取数字 * * @return */ private double getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; } public static void main(String args[]) { Calculator_Time calculator1 = new Calculator_Time(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } ---------------------------------------------------------------------------------------------- //科学计算器 import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Stack; import javax.swing.ButtonGroup; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JTextArea; import javax.swing.JRadioButton; import javax.swing.JButton; import java.awt.Color; import java.awt.Font; public class Calculator_Science extends JFrame implements ActionListener { private JPanel contentPane; private JTextArea textArea; StringBuffer sb = new StringBuffer(); // 存储输入的数字 String vl = null; // 存储事件点击的字符 public Calculator_Science() { setTitle("科学型"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 515, 442); JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu menu = new JMenu("功能"); menuBar.add(menu); JMenuItem menuItem = new JMenuItem("标准型"); menuItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Calculate_Ordinary ordinary = new Calculate_Ordinary(); ordinary.setVisible(true); } }); menu.add(menuItem); JMenuItem menuItem_1 = new JMenuItem("科学型"); menu.add(menuItem_1); JMenuItem menuItem_2 = new JMenuItem("时间换算"); menu.add(menuItem_2); menuItem_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Time time = new Calculator_Time(); time.setVisible(true); } }); JMenu menu_1 = new JMenu("关于"); menuBar.add(menu_1); JMenuItem menuItem_4 = new JMenuItem("使用帮助"); menu_1.add(menuItem_4); JMenuItem menuItem_5 = new JMenuItem("关于作者"); menu_1.add(menuItem_4); menuItem_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Calculator_Author calculator_Author = new Calculator_Author(); calculator_Author.setVisible(true); } }); menu_1.add(menuItem_5); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));// setContentPane(contentPane); contentPane.setLayout(null); textArea = new JTextArea(); textArea.setLineWrap(true); textArea.setFont(new Font("微软雅黑", Font.PLAIN, 20)); textArea.setBackground(new Color(255, 250, 240)); textArea.setText("0"); textArea.setBounds(10, 0, 479, 81); contentPane.add(textArea); ButtonGroup bg = new ButtonGroup(); JRadioButton radioButton = new JRadioButton("度", true); radioButton.setBounds(6, 87, 67, 40); contentPane.add(radioButton); JRadioButton radioButton_1 = new JRadioButton("弧度"); radioButton_1.setBounds(91, 87, 67, 40); contentPane.add(radioButton_1); JRadioButton radioButton_2 = new JRadioButton("梯度"); radioButton_2.setBounds(189, 87, 60, 40); contentPane.add(radioButton_2); bg.add(radioButton); bg.add(radioButton_1); bg.add(radioButton_2); JButton btnNewButton = new JButton(""); btnNewButton.setBorder(null); btnNewButton.setBounds(10, 132, 40, 40); contentPane.add(btnNewButton); btnNewButton.addActionListener(this); JButton btnLnv = new JButton("lg"); btnLnv.setBorder(null); btnLnv.setBounds(60, 132, 40, 40); contentPane.add(btnLnv); btnLnv.addActionListener(this); JButton btnLn = new JButton("ln"); btnLn.setBorder(null); btnLn.setBounds(105, 132, 40, 40); contentPane.add(btnLn); btnLn.addActionListener(this); JButton button_1 = new JButton("("); button_1.setBorder(null); button_1.setBounds(155, 132, 40, 40); contentPane.add(button_1); button_1.addActionListener(this); JButton button_2 = new JButton(")"); button_2.setBorder(null); button_2.setBounds(209, 132, 40, 40); contentPane.add(button_2); button_2.addActionListener(this); JButton btnInt = new JButton("int"); btnInt.setBorder(null); btnInt.setBounds(10, 182, 40, 40); contentPane.add(btnInt); btnInt.addActionListener(this); JButton btnSinh = new JButton("sinh"); btnSinh.setBorder(null); btnSinh.setBounds(60, 182, 40, 40); contentPane.add(btnSinh); btnSinh.addActionListener(this); JButton btnSin = new JButton("sin"); btnSin.setBorder(null); btnSin.setBounds(105, 182, 40, 40); contentPane.add(btnSin); btnSin.addActionListener(this); JButton btnX = new JButton("x2"); btnX.setBorder(null); btnX.setBounds(155, 182, 40, 40); contentPane.add(btnX); btnX.addActionListener(this); JButton btnN = new JButton("n!"); btnN.setBorder(null); btnN.setBounds(209, 182, 40, 40); contentPane.add(btnN); btnN.addActionListener(this); JButton btnDms = new JButton("dms"); btnDms.setBorder(null); btnDms.setBounds(10, 232, 40, 40); contentPane.add(btnDms); btnDms.addActionListener(this); JButton btnCosh = new JButton("cosh"); btnCosh.setBorder(null); btnCosh.setBounds(60, 232, 40, 40); contentPane.add(btnCosh); btnCosh.addActionListener(this); JButton btnCos = new JButton("cos"); btnCos.setBorder(null); btnCos.setBounds(105, 232, 40, 40); contentPane.add(btnCos); btnCos.addActionListener(this); JButton btnXy = new JButton("x^y"); btnXy.setBorder(null); btnXy.setBounds(155, 232, 40, 40); contentPane.add(btnXy); btnXy.addActionListener(this); JButton btnYx = new JButton("y√x"); btnYx.setBorder(null); btnYx.setBounds(209, 232, 40, 40); contentPane.add(btnYx); btnYx.addActionListener(this); JButton button_13 = new JButton("π"); button_13.setBorder(null); button_13.setBounds(10, 282, 40, 40); contentPane.add(button_13); button_13.addActionListener(this); JButton btnTanh = new JButton("tanh"); btnTanh.setBorder(null); btnTanh.setBounds(60, 282, 40, 40); contentPane.add(btnTanh); btnTanh.addActionListener(this); JButton btnTan = new JButton("tan"); btnTan.setBorder(null); btnTan.setBounds(105, 282, 40, 40); contentPane.add(btnTan); btnTan.addActionListener(this); JButton btnX_1 = new JButton("x^3"); btnX_1.setBorder(null); btnX_1.setBounds(155, 282, 40, 40); contentPane.add(btnX_1); btnX_1.addActionListener(this); JButton btnx = new JButton("3√x"); btnx.setBorder(null); btnx.setBounds(209, 282, 40, 40); contentPane.add(btnx); btnx.addActionListener(this); JButton btnFe = new JButton("F-E"); btnFe.setBorder(null); btnFe.setBounds(10, 332, 40, 40); contentPane.add(btnFe); btnFe.addActionListener(this); JButton btnExp = new JButton("Exp"); btnExp.setBorder(null); btnExp.setBounds(60, 332, 40, 40); contentPane.add(btnExp); btnExp.addActionListener(this); JButton btnMod = new JButton("Mod"); btnMod.setBorder(null); btnMod.setBounds(105, 332, 40, 40); contentPane.add(btnMod); btnMod.addActionListener(this); JButton btnLog = new JButton("log"); btnLog.setBorder(null); btnLog.setBounds(155, 332, 40, 40); contentPane.add(btnLog); btnLog.addActionListener(this); JButton btnx_1 = new JButton("10^x"); btnx_1.setBorder(null); btnx_1.setBounds(209, 332, 40, 40); contentPane.add(btnx_1); btnx_1.addActionListener(this); JButton button_23 = new JButton("←"); button_23.setBorder(null); button_23.setBounds(259, 132, 40, 40); contentPane.add(button_23); button_23.addActionListener(this); JButton btnCe = new JButton("CE"); btnCe.setBorder(null); btnCe.setBounds(309, 132, 40, 40); contentPane.add(btnCe); btnCe.addActionListener(this); JButton btnC = new JButton("C"); btnC.setBorder(null); btnC.setBounds(354, 132, 40, 40); contentPane.add(btnC); btnC.addActionListener(this); JButton button_26 = new JButton("±"); button_26.setBorder(null); button_26.setBounds(404, 132, 40, 40); contentPane.add(button_26); button_26.addActionListener(this); JButton button_27 = new JButton("√"); button_27.setBorder(null); button_27.setBounds(458, 132, 40, 40); contentPane.add(button_27); button_27.addActionListener(this); JButton btnMc = new JButton("MC"); btnMc.setBorder(null); btnMc.setBounds(259, 87, 40, 40); contentPane.add(btnMc); btnMc.addActionListener(this); JButton btnMr = new JButton("MR"); btnMr.setBorder(null); btnMr.setBounds(309, 87, 40, 40); contentPane.add(btnMr); btnMr.addActionListener(this); JButton btnMs = new JButton("MS"); btnMs.setBorder(null); btnMs.setBounds(354, 87, 40, 40); contentPane.add(btnMs); btnMs.addActionListener(this); JButton btnM = new JButton("M+"); btnM.setBorder(null); btnM.setBounds(404, 87, 40, 40); contentPane.add(btnM); btnM.addActionListener(this); JButton btnM_1 = new JButton("M-"); btnM_1.setBorder(null); btnM_1.setBounds(458, 87, 40, 40); contentPane.add(btnM_1); btnM_1.addActionListener(this); JButton button_33 = new JButton("7"); button_33.setBorder(null); button_33.setBounds(259, 182, 40, 40); contentPane.add(button_33); button_33.addActionListener(this); JButton button_34 = new JButton("8"); button_34.setBorder(null); button_34.setBounds(309, 182, 40, 40); contentPane.add(button_34); button_34.addActionListener(this); JButton button_35 = new JButton("9"); button_35.setBorder(null); button_35.setBounds(354, 182, 40, 40); contentPane.add(button_35); button_35.addActionListener(this); JButton button_36 = new JButton("/"); button_36.setBorder(null); button_36.setBounds(404, 182, 40, 40); contentPane.add(button_36); button_36.addActionListener(this); JButton button_37 = new JButton("%"); button_37.setBorder(null); button_37.setBounds(458, 182, 40, 40); contentPane.add(button_37); button_37.addActionListener(this); JButton button_38 = new JButton("4"); button_38.setBorder(null); button_38.setBounds(259, 232, 40, 40); contentPane.add(button_38); button_38.addActionListener(this); JButton button_39 = new JButton("5"); button_39.setBorder(null); button_39.setBounds(309, 232, 40, 40); contentPane.add(button_39); button_39.addActionListener(this); JButton button_40 = new JButton("6"); button_40.setBorder(null); button_40.setBounds(354, 232, 40, 40); contentPane.add(button_40); button_40.addActionListener(this); JButton button_41 = new JButton("*"); button_41.setBorder(null); button_41.setBounds(404, 232, 40, 40); contentPane.add(button_41); button_41.addActionListener(this); JButton button_42 = new JButton("1/x"); button_42.setBorder(null); button_42.setBounds(458, 232, 40, 40); contentPane.add(button_42); button_42.addActionListener(this); JButton button_43 = new JButton("1"); button_43.setBorder(null); button_43.setBounds(259, 282, 40, 40); contentPane.add(button_43); button_43.addActionListener(this); JButton button_44 = new JButton("2"); button_44.setBorder(null); button_44.setBounds(309, 282, 40, 40); contentPane.add(button_44); button_44.addActionListener(this); JButton button_45 = new JButton("3"); button_45.setBorder(null); button_45.setBounds(354, 282, 40, 40); contentPane.add(button_45); button_45.addActionListener(this); JButton button_46 = new JButton("-"); button_46.setBorder(null); button_46.setBounds(404, 282, 40, 40); contentPane.add(button_46); button_46.addActionListener(this); JButton button_50 = new JButton("."); button_50.setBorder(null); button_50.setBounds(354, 332, 40, 40); contentPane.add(button_50); button_50.addActionListener(this); JButton button_51 = new JButton("+"); button_51.setBorder(null); button_51.setBounds(404, 332, 40, 40); contentPane.add(button_51); button_51.addActionListener(this); JButton btnNewButton_1 = new JButton("="); btnNewButton_1.setBorder(null); btnNewButton_1.setBounds(458, 282, 40, 90); contentPane.add(btnNewButton_1); btnNewButton_1.addActionListener(this); JButton btnNewButton_2 = new JButton("0"); btnNewButton_2.setBounds(259, 332, 90, 40); contentPane.add(btnNewButton_2); btnNewButton_2.addActionListener(this); } //添加事件点击 public void actionPerformed(ActionEvent e) { vl = e.getActionCommand(); try { if(vl.equals(".") || Integer.parseInt(vl) % 2 == 1 || Integer.parseInt(vl) % 2 == 0) { sb.append(vl); } } catch (Exception c) { if(vl.equals("+") || vl.equals("-") || vl.equals("*") || vl.equals("/") ||vl.equals("log") || vl.equals("√") || vl.equals("%") ||vl.equals("n!") || vl.equals("int") || vl.equals("sinh") ||vl.equals("lg") || vl.equals("sin") || vl.equals("x2") ||vl.equals("ln") || vl.equals("cosh") || vl.equals("cos") || vl.equals("(") || vl.equals("x^y") || vl.equals("y√x") || vl.equals(")") || vl.equals("tanh") || vl.equals("tan") || vl.equals("π") || vl.equals("x^3") || vl.equals("3√x") || vl.equals("Mod") || vl.equals("10^x") || vl.equals("1/x")) { sb.append(" "+vl+" "); }else if(vl.equals("=")) { sb.append(" "+"="+" "+ Algorithm(sb)); }else if(vl.equals("C")) { sb.delete(0, sb.length()); }else if(vl.equals("C")) { sb.delete(sb.length()-3, sb.length()); }else if(vl.equals("←")) { sb.delete(sb.length()-1, sb.length()); } } textArea.setText(sb.toString()); } //运算的方法 private String Algorithm(StringBuffer str) { String a = str.toString(); String n[]; n = a.split(" "); double ans = 0d; for(int i = 1; i < n.length; i++) { if(n[i].equals("+")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = after+Front; } if(n[i].equals("-")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = Front-after; } if(n[i].equals("*")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = after*Front; } if(n[i].equals("/")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = Front/after; } if(n[i].equals("√")) { double after = Double.parseDouble(n[i + 1]); ans = Math.sqrt(after); } if(n[i].equals("%")) { double Front = Double.parseDouble(n[i - 1]); ans = Front/100; } if(n[i].equals("int")) { double after = Double.parseDouble(n[i + 1]); ans = Math.ceil(after); } if(n[i].equals("sinh")) { double after = Double.parseDouble(n[i + 1]); ans = Math.sinh(after); } if(n[i].equals("sinh")) { double after = Double.parseDouble(n[i + 1]); ans = Math.sin(after); } if(n[i].equals("lg")) { double after = Double.parseDouble(n[i + 1]); ans = Math.log10(after); } if(n[i].equals("x2")) { double Front = Double.parseDouble(n[i - 1]); ans = Front*Front; } if(n[i].equals("cosh")) { double after = Double.parseDouble(n[i + 1]); ans = Math.cosh(after); } if(n[i].equals("cos")) { double after = Double.parseDouble(n[i + 1]); ans = Math.cos(after); } if(n[i].equals("x^y")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = Math.pow(Front, after); } if(n[i].equals("y√x")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = Math.pow(Front, 1d/after); } if(n[i].equals("tanh")) { double after = Double.parseDouble(n[i + 1]); ans = Math.tanh(after); } if(n[i].equals("tan")) { double after = Double.parseDouble(n[i + 1]); ans = Math.tan(after); } if(n[i].equals("x^3")) { double Front = Double.parseDouble(n[i - 1]); ans = Front*Front*Front; } if(n[i].equals("3√x")) { double after = Double.parseDouble(n[i + 1]); ans = Math.pow(after, 1d/3); } if(n[i].equals("Mod")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i - 1]); ans = (Front%after); } if(n[i].equals("ln")) { double after = Double.parseDouble(n[i + 1]); ans =Math.log(after); } if(n[i].equals("10^x")) { double after = Double.parseDouble(n[i + 1]); ans = Math.pow(10, after); } if(n[i].equals("1/x")) { double after = Double.parseDouble(n[i + 1]); ans = 1/after; } if(n[i].equals("π")) { double after = Double.parseDouble(n[i - 1]); ans = 3.14*after; }if(n[i].equals("log")) { double after = Double.parseDouble(n[i + 1]); double Front = Double.parseDouble(n[i -1 ]); ans = Math.log(after)/Math.log(Front); } if(n[i].equals("n!")) { double after = Double.parseDouble(n[i - 1]); int e ; int c=1; for(e=1;e<=after;e++) {c=c*e; ans=c;} } } String result = String.valueOf(ans); return result; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Calculator_Science frame = new Calculator_Science(); frame.setVisible(true); frame.setResizable(false); } catch (Exception e) { e.printStackTrace(); } } }); } } ------------------------------------------------------------------------------ //标准计算器 import java.awt.BorderLayout; import java.awt.Button; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JTextArea; import javax.swing.JTextField; import java.awt.Color; import javax.swing.JButton; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Stack; import java.awt.event.ActionEvent; import javax.swing.JMenuBar; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import java.awt.Font; import java.awt.GridLayout; public class Calculate_Ordinary extends JFrame implements ActionListener { private final String[] KEYS = { "7", "8", "9", "/", "√", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" }; /** 计算器上的功能键的显示名字 final p86*/ private final String[] COMMAND = { "Backspace", "CE", "C" }; /** 计算器左边的M的显示名字 */ private final String[] M = {"MC", "MR", "MS", "M+" }; /** 计算器上键的按钮 */ private JButton keys[] = new JButton[KEYS.length]; /** 计算器上的功能键的按钮 */ private JButton commands[] = new JButton[COMMAND.length]; /** 计算器左边的M的按钮 */ private JButton m[] = new JButton[M.length]; /** 计算结果文本框 */ private JTextField resultText = new JTextField("0"); // 标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字 private boolean firstDigit = true; // 计算的中间结果。 private double resultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 private boolean operateValidFlag = true; StringBuffer sb = new StringBuffer(); // 存储输入的数字 String vl = null; // 存储事件点击的字符 //标准型计算器 public Calculate_Ordinary() { setTitle("标准型"); // 初始化计算器 super p114 // 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); this.setTitle("标准计算器"); // 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); // 不许修改计算器的大小 this.setSize(500, 500); this.setResizable(false); // 使计算器中各组件大小合适 //使这个外部容器自动调整成刚好装下这几个按钮的大小的尺寸。 JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu menu = new JMenu("功能"); menuBar.add(menu); JMenuItem menuItem = new JMenuItem("标准型"); menu.add(menuItem); JMenuItem menuItem_1 = new JMenuItem("科学型"); menu.add(menuItem_1); menuItem_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Science science = new Calculator_Science(); science.setVisible(true); } }); JMenuItem menuItem_2 = new JMenuItem("时间换算"); menu.add(menuItem_2); menuItem_2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Time time = new Calculator_Time(); time.setVisible(true); } }); JMenu menu_1 = new JMenu("关于"); menuBar.add(menu_1); JMenuItem menuItem_4 = new JMenuItem("使用帮助"); menu_1.add(menuItem_4); JMenuItem menuItem_5 = new JMenuItem("关于作者"); menu_1.add(menuItem_5); menuItem_5.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Calculator_Author calculator_Author = new Calculator_Author(); calculator_Author.setVisible(true); } }); resultText.setHorizontalAlignment(JTextField.RIGHT); // 设置文本框背景颜色为白色 resultText.setBackground(Color.white); resultText.setFont(new Font("TimesRoman",Font.BOLD,46)); // 初始化计算器上键的按钮,将键放在一个画板内 JPanel calckeysPanel = new JPanel(); // 用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3)); for (int i = 0; i < KEYS.length; i++) { keys[i] = new JButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.white); keys[i].setBackground(Color.DARK_GRAY); keys[i].setFont(new Font("Courir",Font.ITALIC,20)); } // 运算符键用红色标示,其他键用黑色表示 keys[3].setForeground(Color.white); keys[8].setForeground(Color.white); keys[13].setForeground(Color.white); keys[18].setForeground(Color.white); keys[19].setForeground(Color.white); keys[3].setBackground(Color.getHSBColor(250, 155, 140)); keys[8].setBackground(Color.getHSBColor(250, 155, 140)); keys[13].setBackground(Color.getHSBColor(250, 155, 140)); keys[18].setBackground(Color.getHSBColor(250, 155, 140)); keys[19].setBackground(Color.getHSBColor(250, 155, 140)); // 初始化功能键,都用红色标示。将功能键放在一个画板内 JPanel commandsPanel = new JPanel(); // 用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 commandsPanel.setLayout(new GridLayout(1, 3, 3, 3)); for (int i = 0; i < COMMAND.length; i++) { commands[i] = new JButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setForeground(Color.DARK_GRAY); commands[i].setFont(new Font("Courir",Font.PLAIN,20)); } // 初始化M键,用红色标示,将M键放在一个画板内 JPanel calmsPanel = new JPanel(); // 用网格布局管理器,5行,1列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 calmsPanel.setLayout(new GridLayout(4, 1, 3, 3)); for (int i = 0; i < M.length; i++) { m[i] = new JButton(M[i]); calmsPanel.add(m[i]); m[i].setForeground(Color.red); m[i].setFont(new Font("Courir",Font.PLAIN,20)); } // 下面进行计算器的整体布局,将calckeys和command画板放在计算器的中部, // 将文本框放在北部,将calms画板放在计算器的西部。 // 新建一个大的画板,将上面建立的command和calckeys画板放在该画板内 JPanel panel1 = new JPanel(); // 画板采用边界布局管理器,画板里组件之间的水平和垂直方向上间隔都为3象素 panel1.setLayout(new BorderLayout(3, 3)); panel1.add("North", commandsPanel); panel1.add("Center", calckeysPanel); // 建立一个画板放文本框 JPanel top = new JPanel(); top.setLayout(new BorderLayout()); top.add("Center", resultText); // 整体布局 getContentPane().setLayout(new BorderLayout(3, 5)); getContentPane().add("North", top); getContentPane().add("Center", panel1); getContentPane().add("West", calmsPanel); // 为各按钮添加事件侦听器 // 都使用同一个事件侦听器,即本对象。本类的声明中有implements ActionListener for (int i = 0; i < KEYS.length; i++) { keys[i].addActionListener(this); } for (int i = 0; i < COMMAND.length; i++) { commands[i].addActionListener(this); } for (int i = 0; i < M.length; i++) { m[i].addActionListener(this); } } //添加事件点击 public void actionPerformed(ActionEvent e) { // 获取事件源的标签 String label = e.getActionCommand(); if (label.equals(COMMAND[0])) { // 用户按了"Backspace"键 handleBackspace(); } else if (label.equals(COMMAND[1])) { // 用户按了"CE"键 resultText.setText("0"); } else if (label.equals(COMMAND[2])) { // 用户按了"C"键 handleC(); } else if ("0123456789.".indexOf(label) >= 0) { // 用户按了数字键或者小数点键 handleNumber(label); // handlezero(zero); } else { // 用户按了运算符键 handleOperator(label); } } /** * 处理Backspace键被按下的事件 */ private void handleBackspace() { String text = resultText.getText(); int i = text.length(); if (i > 0) { // 退格,将文本最后一个字符去掉 text = text.substring(0, i - 1); if (text.length() == 0) { // 如果文本没有了内容,则初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } else { // 显示新的文本 resultText.setText(text); } } } /** * 处理数字键被按下的事件 * * @param key */ private void handleNumber(String key) { if (firstDigit) { // 输入的第一个数字 resultText.setText(key); } else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) { // 输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText() + "."); } else if (!key.equals(".")) { // 如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText() + key); } // 以后输入的肯定不是第一个数字了 firstDigit = false; } /** * 处理C键被按下的事件 */ private void handleC() { // 初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; } /** * 处理运算符键被按下的事件 * * @param key */ private void handleOperator(String key) { if (operator.equals("/")) { // 除法运算 // 如果当前结果文本框中的值等于0 if (getNumberFromText() == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum /= getNumberFromText(); } } else if (operator.equals("1/x")) { // 倒数运算 if (resultNum == 0.0) { // 操作不合法 operateValidFlag = false; resultText.setText("零没有倒数"); } else { resultNum = 1 / resultNum; } } else if (operator.equals("+")) { // 加法运算 resultNum += getNumberFromText(); } else if (operator.equals("-")) { // 减法运算 resultNum -= getNumberFromText(); } else if (operator.equals("*")) { // 乘法运算 resultNum *= getNumberFromText(); } else if (operator.equals("√")) { // 平方根运算 resultNum = Math.sqrt(resultNum); } else if (operator.equals("%")) { // 百分号运算,除以100 resultNum = resultNum / 100; } else if (operator.equals("+/-")) { // 正数负数运算 resultNum = resultNum * (-1); } else if (operator.equals("=")) { // 赋值运算 resultNum = getNumberFromText(); } if (operateValidFlag) { // 双精度浮点数的运算 long t1; double t2; t1 = (long) resultNum; t2 = resultNum - t1; if (t2 == 0) { resultText.setText(String.valueOf(t1)); } else { resultText.setText(String.valueOf(resultNum)); } } // 运算符等于用户按的按钮 operator = key; firstDigit = true; operateValidFlag = true; } /** * 从结果文本框中获取数字 * * @return */ private double getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; } public static void main(String args[]) { Calculate_Ordinary calculator1 = new Calculate_Ordinary(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } -------------------------------------------------------------------------------- //关于 import java.awt.BorderLayout; import java.awt.Color; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import java.awt.Font; public class Calculator_Author extends JFrame { private JPanel contentPane; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Calculator_Author frame = new Calculator_Author(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public Calculator_Author() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 489, 335); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel lblNewLabel = new JLabel("小组成员:"); lblNewLabel.setFont(new Font("华文彩云", Font.BOLD, 15)); lblNewLabel.setBounds(20, 223, 530, 52); lblNewLabel.setForeground(Color.black); contentPane.add(lblNewLabel); JLabel label = new JLabel("软件二班:第六组"); label.setFont(new Font("华文彩云", Font.BOLD, 30 )); label.setForeground(Color.BLUE); label.setBounds(120, 70, 300, 75); contentPane.add(label); JLabel lblqq = new JLabel("指导教师:"); lblqq.setFont(new Font("华文彩云", Font.BOLD, 20)); lblqq.setBounds(150, 150, 307, 73); contentPane.add(lblqq); lblqq.setForeground(Color.BLUE); } } |
|
来自: 昵称57973720 > 《待分类》