Java编写计算器的常见方法实例总结
本文实例总结了Java编写计算器的常见方法。分享给大家供大家参考,具体如下:
方法一:
package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("Calculator"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); // addButton("Backspace", 0, 1, 2, 1, insert); // addButton("CE", 2, 1, 1, 1, insert); // addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); // addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); this.setResizable(false); setSize(180, 200); setVisible(true); } private void addButton(String label, int row, int column, int with, int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField.setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { if (lastCommand.equals("+")) result += x; else if (lastCommand.equals("-")) result -= x; else if (lastCommand.equals("*")) result *= x; else if (lastCommand.equals("/")) result /= x; else if (lastCommand.equals("=")) result = x; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Salin selepas log masuk
Salin selepas log masuk
方法二:
import java.awt.*; import java.awt.event.*; public class MyCalculator { PRivate Frame f; private TextField tf = new TextField(30); private long result; private boolean append=false; private char Operator='='; private Button[] btn=new Button[15]; public MyCalculator() { initComponent(); } private void initComponent() { f = new Frame("My Calculator V1.0"); f.setLayout(new BorderLayout()); //The frame uses BorderLayout f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); Panel centerPanel = new Panel(); centerPanel.setLayout(new GridLayout(5, 3)); //The panel uses GridLayout NumberListener nl=new NumberListener(); OperatorListener ol=new OperatorListener(); btn[10]=new Button("+"); btn[11]=new Button("-"); btn[12]=new Button("*"); btn[13]=new Button("/"); btn[14]=new Button("="); for (int i=0;i<=9;i++){ btn[i]=new Button(String.valueOf(i)); centerPanel.add(btn[i]); btn[i].addActionListener(nl); if (i%2==1){ centerPanel.add(btn[(i+19)/2]); btn[(i+19)/2].addActionListener(ol); } } f.add(centerPanel, BorderLayout.CENTER); Panel northPanel = new Panel(); tf.setEditable(false); northPanel.add(tf); f.add(northPanel, BorderLayout.NORTH); } public void go() { f.pack(); f.setVisible(true); } public static void main(String[] args) { new MyCalculator().go(); } /** *采用成员内部类方式,实现监听器接口,方便访问主类内类内部成员。 *此类负责数字按钮Action事件监听和处理 */ class NumberListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if (!append) { tf.setText(""); append=true; } String s=tf.getText(); s+=e.getActionCommand(); tf.setText(s); if (!btn[10].isEnabled()){ for(int i=10;i<=14;i++) btn[i].setEnabled(true); } } } /** * 成员内部类,负责操作符按钮的事件处理 */ class OperatorListener implements ActionListener{ public void actionPerformed(ActionEvent e){ if (!append) return; for(int i=10;i<=14;i++) btn[i].setEnabled(false); String s=tf.getText(); long num=Long.parseLong(s);//get the number of textfield append=false; //set append switch(operator){ case '+':result+=num;break; case '-':result-=num;break; case '*':result*=num;break; case '/':{ if (num==0) result=0; else result/=num; break; } case '=':result=num;break; } tf.setText(String.valueOf(result)); //set the value of result to textfield String op=e.getActionCommand(); operator=op.charAt(0); // set operator } } }
Salin selepas log masuk
方法三:
package wanwa; import java.util.*; public class calc { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("*****************简易计算器****************"); System.out.println("*\t\t\t\t\t*"); System.out.println("* 使用说明: 1.加法 2.减法 3.乘法 4.除法 *"); System.out.println("*\t\t\t\t\t*"); System.out.println("*****************************************"); for(int i=0;i<100;i++){ System.out.print("\n请选择运算规则:"); int num = input.nextInt(); switch(num){ case 1: System.out.println("\n******你选择了加法******\n"); System.out.print("请输入第1个加数:"); int jiashu1 = input.nextInt(); System.out.print("请输入第2个加数:"); int jiashu2 = input.nextInt(); System.out.println("运算结果为:" + jiashu1 + " + " + jiashu1 + " = " + (jiashu1 + jiashu2)); break; case 2: System.out.println("\n******你选择了减法******\n"); System.out.print("请输入被减数:"); int jianshu1 = input.nextInt(); System.out.print("请输入减数:"); int jianshu2 = input.nextInt(); System.out.println("运算结果为:" + jianshu1 + " - " + jianshu2 + " = " + (jianshu1 - jianshu2)); break; case 3: System.out.println("\n******你选择了乘法******\n"); System.out.print("请输入第1个因数:"); int chengfa1 = input.nextInt(); System.out.print("请输入第2个因数:"); int chengfa2 = input.nextInt(); System.out.println("运算结果为:" + chengfa1 + " * " + chengfa2 + " = " + (chengfa1 * chengfa2)); break; case 4: System.out.println("\n******你选择了除法******\n"); System.out.print("请输入被除数:"); double chufa1 = input.nextInt(); System.out.print("请输入除数:"); double chufa2 = input.nextInt(); System.out.println("运算结果为:" + chufa1 + " / " + chufa2 + " = " + (chufa1 / chufa2) + " 余 " + (chufa1 % chufa2)); break; default: System.out.println("\n你的选择有错,请重新选择!"); break; } } } }
Salin selepas log masuk
方法四:
package wanwa; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame { private Container container; private GridBagLayout layout; private GridBagConstraints constraints; private JTextField displayField;// 计算结果显示区 private String lastCommand;// 保存+,-,*,/,=命令 private double result;// 保存计算结果 private boolean start;// 判断是否为数字的开始 public Calculator() { super("Calculator"); container = getContentPane(); layout = new GridBagLayout(); container.setLayout(layout); constraints = new GridBagConstraints(); start = true; result = 0; lastCommand = "="; displayField = new JTextField(20); displayField.setHorizontalAlignment(JTextField.RIGHT); constraints.gridx = 0; constraints.gridy = 0; constraints.gridwidth = 4; constraints.gridheight = 1; constraints.fill = GridBagConstraints.BOTH; constraints.weightx = 100; constraints.weighty = 100; layout.setConstraints(displayField, constraints); container.add(displayField); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); // addButton("Backspace", 0, 1, 2, 1, insert); // addButton("CE", 2, 1, 1, 1, insert); // addButton("C", 3, 1, 1, 1, insert); addButton("7", 0, 2, 1, 1, insert); addButton("8", 1, 2, 1, 1, insert); addButton("9", 2, 2, 1, 1, insert); addButton("/", 3, 2, 1, 1, command); addButton("4", 0, 3, 1, 1, insert); addButton("5", 1, 3, 1, 1, insert); addButton("6", 2, 3, 1, 1, insert); addButton("*", 3, 3, 1, 1, command); addButton("1", 0, 4, 1, 1, insert); addButton("2", 1, 4, 1, 1, insert); addButton("3", 2, 4, 1, 1, insert); addButton("-", 3, 4, 1, 1, command); addButton("0", 0, 5, 1, 1, insert); // addButton("+/-", 1, 5, 1, 1, insert);// 只显示"-"号,"+"没有实用价值 addButton(".", 2, 5, 1, 1, insert); addButton("+", 3, 5, 1, 1, command); addButton("=", 0, 6, 4, 1, command); this.setResizable(false); setSize(180, 200); setVisible(true); } private void addButton(String label, int row, int column, int with, int height, ActionListener listener) { JButton button = new JButton(label); constraints.gridx = row; constraints.gridy = column; constraints.gridwidth = with; constraints.gridheight = height; constraints.fill = GridBagConstraints.BOTH; button.addActionListener(listener); layout.setConstraints(button, constraints); container.add(button); } private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { displayField.setText(""); start = false; if (input.equals("+/-")) displayField.setText(displayField.getText() + "-"); } if (!input.equals("+/-")) { if (input.equals("Backspace")) { String str = displayField.getText(); if (str.length() > 0) displayField.setText(str.substring(0, str.length() - 1)); } else if (input.equals("CE") || input.equals("C")) { displayField.setText("0"); start = true; } else displayField.setText(displayField.getText() + input); } } } private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent evt) { String command = evt.getActionCommand(); if (start) { lastCommand = command; } else { calculate(Double.parseDouble(displayField.getText())); lastCommand = command; start = true; } } } public void calculate(double x) { if (lastCommand.equals("+")) result += x; else if (lastCommand.equals("-")) result -= x; else if (lastCommand.equals("*")) result *= x; else if (lastCommand.equals("/")) result /= x; else if (lastCommand.equals("=")) result = x; displayField.setText("" + result); } public static void main(String[] args) { Calculator calculator = new Calculator(); calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Salin selepas log masuk
Salin selepas log masuk
希望本文所述对大家Java程序设计有所帮助。
更多Java编写计算器的常见方法实例总结相关文章请关注PHP中文网!
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas
R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu
By 尊渡假赌尊渡假赌尊渡假赌
Assassin's Creed Shadows: Penyelesaian Riddle Seashell
3 minggu yang lalu
By DDD
Apa yang Baru di Windows 11 KB5054979 & Cara Memperbaiki Masalah Kemas Kini
2 minggu yang lalu
By DDD
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu
By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas
Tutorial CakePHP
1382
52

