【Java】编程练习:简易计算器(BigDecimal 及其常用操作)

作业要求

编写Java GUI程序,实现一个简单计算器。要求如下:

(1)设计的界面如下图所示:窗体的标题栏显示“模拟计算器—江海大”,1个文本框用于显示输入字符和计算结果;20个按钮控件作为字符输入按键或者功能按键。
在这里插入图片描述
(2)计算功能:实现加、减、乘、除等双目运算,开平方、百分数等单目运算;

(3)辅助功能:按钮“C”清空文本框;按钮“←”退格,删除文本框中最右边的一个字符。

代码

为了锻炼大家阅读代码的能力,本篇博文不包含代码的详细注释,只说明几点:
1、Java 不像 C / C++ 那样具有手动释放内存的函数。Java 由垃圾收集器(Garbage Collecter)来清除不再被变量引用的内存对象。
2、BigDecimal 对象一旦建立,不能修改。如果要修改某个 BigDecimal 变量的值,只能再次进行 new 操作。这个变量会指向内存中新建的新的 BigDecimal 的值,原有的 BigDecimal 成为内存碎片,往后将被垃圾收集器自动回收(GC 一般不会立即回收不再被引用的对象)。
3、通过 BigDecimal 进行除法时,如果除不尽,会产生异常。本程序处理这个异常的方法是设定保留的小数位数(默认为 64 位)并重新计算。
4、BigDecimal 类的成员变量中的指定四舍五入方式的常量已经弃用,指定四舍五入方式请通过 java.math.RoundingMode 中的常量指定。
5、由于时间关系,我没有增加处理键盘响应的代码,因此这个简易计算器无法通过键盘输入。这部分就暂时先鸽了,等我十分空闲时会考虑补充。
6、代码横向长度较长,建议复制到 IDE 中,将 IDE 的窗口最大化后再进行查看。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.math.MathContext;
import java.math.RoundingMode;
import java.math.BigDecimal;
import java.math.BigInteger;
public class Calc {
   
    public static void main(String[] args) {
    Main m = new Main(); }
}
class Global {
   
    public static JTextField text = new JTextField("0");
    public static final int scale = 64;
}
class Main {
   
    JFrame frame = new JFrame("模拟计算器——江海大");
    Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
    JPanel panel = new JPanel(new GridLayout(5, 4));
    Inputter inputter = new Inputter();
    String name[] = {
    "C", "÷", "×", "←","7", "8", "9", "-", "4", "5", "6", "+", "1", "2", "3", "√", "%", "0", ".", "=" };
    JButton button[] = new JButton[name.length];
    Main() {
   
        Global.text.setEditable(false);
        frame.setLayout(new BorderLayout()); frame.setBounds(screen.width / 2 - 320, screen.height / 2 - 180, 640, 360);
        frame.setResizable(false)
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值