用Java写简易计算器 您所在的位置:网站首页 用java编写计算器的详细思路 用Java写简易计算器

用Java写简易计算器

2024-01-03 12:15| 来源: 网络整理| 查看: 265

设计一个图形界面的简易计算器,完成简单的算术运算符,可以完成加法、减法、乘法、除法和取余运算。这里只是提供了各个部分功能式怎么处理的,不是完整的代码。如果需要的话,自己读一下代码,因为基本每行代码都有注释,应该看起来也很简单,适合小白学习(本人就是小白)。

这个有个需要改进就行文本框不能整个显示出算式例如:“1+2=3”  只是显示你点击的1和2,然后最好显示结果,课设时间紧,就没完善。

首先设计需要的数字键,现实文本框

//计算器上的键的显示名字 private String[] KEYS= { "7", "8", "9", "+", "4", "5", "6", "-", "*", "1", "2", "3", "/", "0", ".","c", "%", "="}; //计算器上键的按钮 private JButton keys[] = new JButton[KEYS.length]; //计算结果文本框 private JTextField resultText = new JTextField("0",21); //用户是否按的是整个表达式的第一个数字或者是运算符后的第一个数字 private boolean firstDigit = true; //计算的中间结果 private double resultNum = 0.0; // 当前运算的运算符 private String operator = "="; // 操作是否合法 private boolean operateValidFlag = true;

对计算器背景颜色、标题和显示位置进行设计

public Calculator() { super(); // 初始化计算器 init(); // 设置计算器的背景颜色 this.setBackground(Color.LIGHT_GRAY); //设置计算器标题 this.setTitle("计算器"); // 在屏幕(500, 300)坐标处显示计算器 this.setLocation(500, 300); // 不许修改计算器的大小 this.setResizable(false); // 使计算器中各组件大小合适 this.pack(); }

初始化计算器

这里我建议使用setLayout布局比较合适,因为这里数字键和功能键都是几行几列整齐形的。

public void init() { //设置文本框中的内容向右对齐 resultText.setHorizontalAlignment(JTextField.RIGHT); //不允许修改文本框内容 resultText.setEditable(false); //设置文本框背景为白色 resultText.setBackground(Color.WHITE); //初始化计算器上键的按钮,并将键放在一个画板内 JPanel calckeysPanel = new JPanel(); //布局一个4行3列的网格,并且网格之间的水平间隔为3个像素,垂直间隔为3个像素 calckeysPanel.setLayout(new GridLayout(4,3,3,3)); for(int i=0;i= 0) { // 用户按了数字键或者小数点键 handleNumber(label); } else if (label.equals(KEYS[15])) { // 用户按了"C"键 handleC(); } else { // 用户按了运算符键 handleOperator(label); } }

功能键被按下,进入各自的数学函数当中。Java中有很多的数学函数,不需要自己单独写,如果有其他要求,可以去搜素一下相应的函数。除法就要考虑分母不可以为0。

private void handleOperator(String key) { if(operator.equals("/")) { // 除法运算 // 如果当前结果文本框中的值等于0 if(getNumberFromText() == 0.0) { //操作不合法 operateValidFlag = false; resultText.setText("除数不能为零"); } else { resultNum /= getNumberFromText(); } } else if (operator.equals("+")) { // 加法运算 resultNum += getNumberFromText(); } else if (operator.equals("-")) { // 减法运算 resultNum -= getNumberFromText(); } else if (operator.equals("*")) { // 乘法运算 resultNum *= getNumberFromText(); } else if (operator.equals("%")) { // 百分号运算 int a = (int) getNumberFromText(); resultNum = Math.floorMod((int) resultNum, a); } 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; }

数字键按下的处理

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; }

清除键被按下

private void handleC() { // 初始化计算器的各种值 resultText.setText("0"); firstDigit = true; operator = "="; }

文本框显示数据

private double getNumberFromText() { double result = 0; try { result = Double.valueOf(resultText.getText()).doubleValue(); } catch (NumberFormatException e) { } return result; }

这里都是个人的一些看法,因为也是Java大作业课设所以也有借鉴到其他大神的地方。如果有改进的地方也希望大家评论一起探讨学习。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有