概述
计算器是我们日常生活中经常需要使用的工具之一,它可以让我们轻松地进行数学运算。而在计算器的实现中,Java是非常流行的语言之一。它的面向对象的特性和丰富的库函数使得计算器的开发变得十分容易。下面,我们就来一起看一看如何用Java来实现计算器。
图形界面的设计
在进行计算器的实现时,图形界面是必不可少的一部分。Java提供了Swing和AWT两种常用的图形用户界面工具包。其中,Swing是其中功能更加强大的一种,可以用来创建现代、精美的图形界面。在Swing中,JFrame是最常用的容器类,它可以包含其他的组件,例如按钮、文本框等等。对于简单的计算器,我们可以使用一个JPanel来包含所有组件,这样可以让整个界面看起来更加整洁。下面,我们就来看看具体实现代码:
import javax.swing.*; import java.awt.*; public class Calculator extends JFrame { public Calculator() { setTitle("Java计算器"); setSize(300, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); JPanel panel = new JPanel(new GridLayout(4, 4)); panel.add(new JButton("7")); panel.add(new JButton("8")); panel.add(new JButton("9")); panel.add(new JButton("/")); panel.add(new JButton("4")); panel.add(new JButton("5")); panel.add(new JButton("6")); panel.add(new JButton("*")); panel.add(new JButton("1")); panel.add(new JButton("2")); panel.add(new JButton("3")); panel.add(new JButton("-")); panel.add(new JButton("0")); panel.add(new JButton(".")); panel.add(new JButton("=")); panel.add(new JButton("+")); setContentPane(panel); setVisible(true); } public static void main(String[] args) { new Calculator(); } }
实现计算逻辑
在完成GUI的设计后,我们还需要在计算器中实现基本的四则运算。这一部分的实现可以在按钮的监听事件中完成。当用户点击一个按钮时,我们需要根据不同的按钮进行不同的操作:如果是数字按钮,就将对应的数字添加到计算器的显示文本框中;如果是运算符按钮,就将当前的数字和运算符进行缓存,等待下一个操作。而当用户点击“=”按钮时,我们需要进行实际的计算,然后将结果展示在计算器的显示文本框中。具体实现代码如下:
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Calculator extends JFrame { private String currentNumber = ""; private String currentAction = ""; private double result = 0; public Calculator() { setTitle("Java计算器"); setSize(300, 400); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); JPanel panel = new JPanel(new GridLayout(4, 4)); JTextField textField = new JTextField(); textField.setEditable(false); textField.setHorizontalAlignment(SwingConstants.RIGHT); panel.add(new JButton("7")); panel.add(new JButton("8")); panel.add(new JButton("9")); panel.add(new JButton("/")); panel.add(new JButton("4")); panel.add(new JButton("5")); panel.add(new JButton("6")); panel.add(new JButton("*")); panel.add(new JButton("1")); panel.add(new JButton("2")); panel.add(new JButton("3")); panel.add(new JButton("-")); panel.add(new JButton("0")); panel.add(new JButton(".")); panel.add(new JButton("=")); panel.add(new JButton("+")); ActionListener listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); String buttonText = button.getText(); if (buttonText.matches("d")) { currentNumber += buttonText; textField.setText(currentNumber); } else if (buttonText.matches("[+-*/]")) { if (currentAction.equals("")) { result = Double.parseDouble(currentNumber); } else { result = calculate(result, Double.parseDouble(currentNumber), currentAction); } currentNumber = ""; currentAction = buttonText; } else if (buttonText.equals("=")) { result = calculate(result, Double.parseDouble(currentNumber), currentAction); currentNumber = ""; currentAction = ""; textField.setText(Double.toString(result)); } } }; for (Component c : panel.getComponents()) { if (c instanceof JButton) { ((JButton)c).addActionListener(listener); } } setLayout(new BorderLayout()); add(textField, BorderLayout.NORTH); add(panel, BorderLayout.CENTER); setVisible(true); } private double calculate(double a, double b, String action) { double result = 0; if (action.equals("+")) { result = a + b; } else if (action.equals("-")) { result = a - b; } else if (action.equals("*")) { result = a * b; } else if (action.equals("/")) { result = a / b; } return result; } public static void main(String[] args) { new Calculator(); } }
总结
通过上面的介绍和示例代码,我们可以看到,用Java实现一个简单的计算器并不是很难。我们只需要了解Java的GUI库和数学计算相关的库函数,并且对Java的面向对象特性有一定的理解,就可以快速地实现一个计算器。在实际的开发中,我们还可以根据需要进行更加精细的设计和优化,例如添加更多的功能、增强用户交互体验等等。总之,Java作为一种多用途的编程语言,可以用来实现各种各样的应用程序,计算器只是其中的一个很小的例子。
本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/java4djava.html
郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。
如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!