使用ivx实现简易计算器的经验总结

今天要讲的是利用ivx制作一个能够进行简单加减乘除运算的计算器,设计思路是将整个输入的运算式保存到一个文本变量中,通过eval()直接方法计算文本变量中表达式的值,下面说一下具体步骤。

1.计数器界面的上面用于显示输入的计算式和计算结果,下面使用文本组件展示16个按键,这16个键可以分为四类,数字键,运算符键,等于键,清零键。其中按钮键和运算符键它们同类按键的操作都是类似的,我们可以写成一个动作组,点击按键时调用动作组并将按键的文本组件内容传给动作组即可。

2.数字键
点击数字键时,只需使用拼接字符串的方式将该键的内容添加到计算式末尾即可,不过由于eval()方法中不能计算“09+08”这样的计算式,所以我们要避免数值首位为0的情况。为了做一个标识,我们在demo中添加一个布尔值变量“末位运算符”,计算器处于初始状态即计算式的值为空值时我们令其为true,在计算中当计算式的最后一位是数字时为false,最后一位是运算符时为true,。这样当“末位运算符”为true时就表示我们此时输入的是数值首位,此时只有输入值非0才将其添加到计算式的末尾,然后将“末位运算符”置为true,否则进行一个提示。

3.运算符
输入运算符时也需要考虑几种情况。首先是计算式不为空的情况,这时如果“末位运算符”为true标明计算式最末尾已经是一个运算符了,我们则将其删除替换成新输入的运算符,做法是截取计算式除最后一位以外的部分和新输入的运算符进行拼接;如果“末位运算符”为false则说明计算式末尾为数值,直接在计算式末尾添加新输入的运算符并将“末位运算符”置为true即可。另外就是计算器处于初始状态,计算式为空时,输入“+”、“*”、“/”这三个运算符是没有意义的,所以只在输入的运算符为“-”将其添加到计算式中,其它情况则对用户进行一个提示。

4.等于键
当点击等于键的时候,我们使用eval()方法对计算式中的内容进行数值计算即可。不过要考虑到计算式最后输入的内容为运算符的情况,这种情况下“末尾运算符”的值会为true,我们对原计算式进行一个截取,抛弃最后一位的无效运算符,另外还要将“末尾运算符”重置为false。

5.清零键
清零键的事件就比较简单了,将计算式的内容清空,答案归0,并把“末位运算符”重置为true即可。

总结
demo中只是实现了简单的加减乘除,要实现更复杂的计算逻辑肯定要考虑到更多的情况,对输入的内容也要进行更多的判定。不过最重要的还是对按键进行一个分类,能使用同一套动作的都用动作组实现,毕竟一个按键一个按键的写事件会增不仅产生大量冗余代码也会很容易出错。

原文地址:https://blog.51cto.com/14556317/2486055

时间: 2024-11-11 05:05:14

使用ivx实现简易计算器的经验总结的相关文章

C#Windows Form简易计算器实现(中)

昨天花了一天的时间弄计算器.也算是做出来了,还是简易的(怀疑猿生!!).在此先感谢昨天被我骚扰的朋友. 先贴一张界面看看 其实健壮性还是挺差的,用户体验也是极差的.比如说用户输入了不合理运算式子,我就直接抛出一个异常完事了,因为要在原来的算法里加判断实在晕乱.所以趁热打铁,希望在写博客的时候再把思路理理,完善不足. 思路一: 因为计算的是四则混合运算,比如2*6-4/(2+3).我们最开始得到的是一个表达式字符串,计算机是不会帮你计算的.而四则混合运算有优先等级的计算,那么该怎么计算呢?于是问了

函数调用_猜数字和简易计算器

package app1; import java.util.*; public class TestFunction{     public static void main(String[] args){         Scanner sc=new Scanner(System.in);         System.out.print("请选择一项应用:\n1.猜数字\n2.简易计算器");         int n=sc.nextInt();         switch(

基于mini2440简易计算器

基于mini2440简易计算器使用的是数组实现,并非逆波兰式,因此功能不够强大,仅供驱动学习,以及C语言基础编程学习之用.有时间读者可以用逆波兰式来实现强大功能计算器,原理也很简单,建议读<c程序设计第二版>里面有算法的代码.读者自行研究.此程序基于电子相册的改进,触摸屏,LCD,字符现实,数字输入等等 mini2440  索尼X35   LCD液晶屏 主函数部分: #include "def.h" #include "option.h" #includ

如何用jsp实现一个简易计算器(三)

做这个jsp页面,主要是为了实现在同一个页面提交和接受数据的功能. 这个小程序存在很多不足,希望大家多多批评指正. <%@ page language="java" contentType="text/html;" pageEncoding="gbk"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://w

C# 简易计算器

编写如下界面的简易计算器界面代码: using System; using System.Windows.Forms; using exp; namespace calculator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } enum symbol { plus,dec,mult,div}; private void button1_Click(object sender, Ev

PyQt5 简易计算器

剩下计算函数(self.calculator)未实现,有兴趣的朋友可以实现它 [知识点] 1.利用循环添加按钮部件,及给每个按钮设置信号/槽 2.给按钮设置固定大小:button.setFixedSize(QtCore.QSize(60,30)) 3.取事件的的发送者(此例为各个按钮)的文本: self.sender().text() [效果图] [源代码] 1 import sys 2 from PyQt5 import QtWidgets,QtCore,QtGui 3 4 5 class E

java简易计算器

此小程序实现了计算器的基本功能: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SimpleCalc extends JFrame{ private static final long serialVersionUID = 1L; String[] labels = {"←","CE","±","√", "

js css 实现简易计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

结对-简易计算器-设计文档

项目:简易计算器 本设计的大概需要的功能:1.可以判断是小数点前还是后 2.需要初始化小数点后的倍率 3.可以标记加减乘除 4.需要记录上一轮结果 5.实现每个数字按钮和算数按钮