java小代码(二)简单的四则运算计算器

java⼩代码(⼆)简单的四则运算计算器
java⼩代码(⼆)简单的四则运算计算器
简单计算器⼩代码说明:此为本⼈原创的⼀个简单的四则运算计算器⼩代码,由于本⼈还是java初学者,所以代码难免会有缺陷,请各位读者见谅。计算器⼩代码主要使⽤java SE中的swing编程,其中窗⼝,按钮等实现使⽤的是swing中已经封装好的组件。⽽计算器的逻辑实现是由本⼈⾃⼰设计的,由于本⼈的能⼒有限,所以考虑到的东西还不太全⾯,但基本的运算经测试后并没有发现多⼤问题,这⾥我只是提供⼀个简单的设计思路,有兴趣的读者可以⾃⼰设计更多复杂的功能。
简单计算器⼩代码功能简述:该计算器除了可以实现简单的加减乘除基本运算,还可以实现平⽅的计算和平⽅根的计算,其中平⽅根的计算使⽤的是Math中的sqrt()⽅法,类型为double类型,所以精度不是太⾼,但⼀般的计算还是可以的,其他的运算使⽤的是java 中BigDecimal中的⽅法,精度相对还是⽐较⾼的。
简单计算器⼩代码运⾏动图:
简单计算器⼩代码源程序:
package duguyuan1998.SimpleCalculator.v1;
/**
* 功能:简单的四则运算计算器
* @author 独孤猿1998
*
*/
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.math.BigDecimal;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class SimpleCalculator extends JFrame {
private static final long serialVersionUID = 1L;
private JTextField textField;        //计算器⽂本框,⽤来显⽰数值
private JButton[] buttons;          //计算器各按钮
private String bufferNumber = "";        //计算器缓存的数值
private String screenNumber = "";        //计算器⽂本框显⽰的计算结果数值
private String operator;          //计算器运算中的运算符
private boolean flag = false;        //计算器中标志运算过程
public SimpleCalculator(String name) {
public SimpleCalculator(String name) {
setTitle(name);            //设置窗⼝标题
遥控飞机制作
setSize(400, 240);          //设置窗⼝宽度和⾼度
setLayout(new BorderLayout(0, 4));      //设置窗⼝的布局管理器
setDefaultCloseOperation(EXIT_ON_CLOSE);    //设置点击窗⼝的叉号结束程序
setLocationRelativeTo(null);        //设置窗⼝在屏幕居中
setResizable(false);          //设置窗⼝⼤⼩不可变
/*定义单⾏⽂本框,⽤于显⽰运算*/
textField = new JTextField("0.0");
textField.setHorizontalAlignment(JTextField.RIGHT);  //设置⽂本框数值显⽰向右对齐  textField.setFont(new Font("宋体", Font.BOLD, 20));  //设置⽂本框中字体
add(textField, BorderLayout.NORTH);      //将⽂本框放⼊窗⼝中
/*定义按钮,将按钮放于panel⾯板中*/
公交车 诗洁JPanel panel = new JPanel();
panel.setLayout(new GridLayout(4, 5, 4, 4));    //设置panel⾯板的布局管理器
String[] buttonNames = {"1", "2", "3", "+", "C",  //定义各个按钮的名称
"4", "5", "6", "-", "CE",
"7", "8", "9", "*", "sqrt",
".", "0", "=", "/", "^2"};
buttons = new JButton[buttonNames.length];
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new JButton(buttonNames[i]);
panel.add(buttons[i]);        //将各个按钮放⼊⾯板panel中
}
listener(buttons, textField);        //为计算机各组件增加
add(panel);            //将⾯板panel放⼊窗⼝中
setVisible(true);          //设置窗⼝可见
}
public void listener(JButton[] buttons, JTextField textField) {
/*为计算器各个按钮增加监听事件*/
for (int i = 0; i < buttons.length; i++) {
String tempString = buttons[i].getText();    //⽤来得到按钮名称
if((i >= 0 && i <= 2) || (i >= 5 && i <= 7) || (i >= 10 && i <= 12) || (i >= 15 && i <= 16)) {    buttons[i].addActionListener(new ActionListener() { //为数字按钮增加监听事件
@Override
public void actionPerformed(ActionEvent e) {
if (flag == false) {
flag = true;
textField.setText("");
}
textField.Text() + tempString);
repaint();
}
});
}
if (i == 3 || i == 8 || i == 13 || i == 18) {
buttons[i].addActionListener(new ActionListener() { //为运算符按钮增加监听事件
@Override
public void actionPerformed(ActionEvent e) {
if (flag || !Text().equals("")) {
flag = false;
operator = tempString;
bufferNumber = Text();
repaint();
}
}
});
}
if (i == 4 || i == 9) {        //为消除按钮增加监听事件
buttons[i].addActionListener(new ActionListener() {
buttons[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (tempString.equals("C")) {
textField.setText("");
repaint();
}
if (tempString.equals("CE")) {
Text().length() != 0) {
textField.Text().substring(0, Text().length() - 1));
}
repaint();
}
}
});
}
if (i == 14 || i == 19) {        //为平⽅和平⽅根增加监听事件
buttons[i].addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
if (tempString.equals("sqrt")) {
BigDecimal result = new Text());
screenNumber = "" + Math.sqrt(result.doubleValue());
}
if (tempString.equals("^2")) {
BigDecimal result = new Text());
screenNumber = result.pow(2).toString();
}
textField.setText(screenNumber);
repaint();
} catch (Exception e2) {
textField.setText("ERROR");
repaint();
}
}
});
}
if (i == 17) {          //为等于号按钮增加监听事件
马铃薯曲奇buttons[i].addActionListener(new ActionListener() {
@Override
藤蔓根茎
public void actionPerformed(ActionEvent e) {
if (!bufferNumber.equals("") && !operator.equals("") && !Text().equals("")) {
if (flag) {
screenNumber = Text();
}
try {
BigDecimal bufferBigDecimal = new BigDecimal(bufferNumber);
BigDecimal screenBigDecimal = new BigDecimal(screenNumber);
switch (operator) {
case "+":
screenNumber = bufferBigDecimal.add(screenBigDecimal).toString();
break;
case "-":
screenNumber = bufferBigDecimal.subtract(screenBigDecimal).toString();
break;
case "*":
screenNumber = bufferBigDecimal.multiply(screenBigDecimal).toString();
break;
汇流板case "/":
screenNumber = bufferBigDecimal.divide(screenBigDecimal, 30, BigDecimal.ROUND_HALF_UP).toString();        break;
break;
default:
break;
}
flag = false;
textField.setText(screenNumber);
bufferNumber = Text();
screenNumber = String();
repaint();
} catch (Exception e2) {
textField.setText("ERROR");
repaint();
}
}
}
});
}
}
/*为计算器的⽂本框显⽰增加监听事件*/
textField.addKeyListener(new KeyAdapter() {    //设置⽂本框的键盘监听事件  @Override
public void keyTyped(KeyEvent e) {
});
}
氢氧化钴
public static void main(String[] args) {
new SimpleCalculator("简单的四则运算计算器");
}
}
源代码百度⽹盘链接:
代码运⾏的jdk版本:java version “1.8.0_202”
运⾏编译器:eclipse

本文发布于:2024-09-21 23:34:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/185680.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:计算器   按钮   设置   增加   监听   事件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议