热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java+NetBeans实现简易的计算器

此计算器能够实现简单的加减乘除运算。插入图片后的界面:创建一个方法来获取数字的值:privatevoidsetNum(Stringstr){实例化对象,获取文本框中的

此计算器能够实现简单的加减乘除运算。

插入图片后的界面:

   

  创建一个方法来获取数字的值:

private void setNum(String str){
//实例化对象,获取文本框中的内容
String strText = new String(jTextField1.getText());
//如果jTextField1的内容等于“0”,则文本框等于输入的内容str
if(strText.equals("0")){
jTextField1.setText(str);
}else{
//否则在原来的内容上追加str
StringBuffer strBuf = new StringBuffer(strText);
strBuf.append(str);
jTextField1.setText(strBuf.toString());
}
}

  加减乘除和小数点运算:

  注:这里的小数点实现不太合理,但是只要人为输入不错误就能保证小数点的正确实现

private void setPoint(String str){
String strText = jTextField1.getText();
//判断strText中字符串的最右边以为是否为运算符
int lastRight = strText.length()-1;
//获得倒数第二位的字符
char ch = strText.charAt(lastRight);
if(ch == '+' || ch == '_' || ch == '*' || ch == '/' || ch == '.'){
//替换strText最右边的运算符为当前按键str,如“12345” “1234”
String strResult = strText.substring(0, lastRight)+str;
//strResult赋值
jTextField1.setText(strResult);
}else{
//strText追加当前str
jTextField1.setText(strText+str);
}
}
    

   等于功能:

private void equalMouseReleased(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
//引用脚本,調用js中的eavl()方法
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
try {
//把字符串转换为表达式(Double类型)“6+3*3”>- 6+3*3
Double num =(Double)se.eval("("+jTextField1.getText()+")*1.0");
            //从文本框中输出结果            jTextField1.setText(num.toString());        } catch (ScriptException ex) {            Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);            jTextField1.setText("输入错误,请重新输入");        }    }

  退格功能:

private void backspaceMouseReleased(java.awt.event.MouseEvent evt) {                                        
// TODO add your handling code here:
String strText = new String(jTextField1.getText());
if(strText.equals("0")){
// jTextField1.setText(str);
}else{
StringBuffer strBuf = new StringBuffer(strText);
//按下标删除每一个字符,直到删除完
strBuf.deleteCharAt(strBuf.length()-1);
jTextField1.setText(strBuf.toString());
//当删除到只剩一位数时自动变“0”
if(strBuf.length()<1){
jTextField1.setText("0");
}
}
}

  清零功能:

private void clearMouseReleased(java.awt.event.MouseEvent evt) {                                    
// TODO add your handling code here:
String strText = new String(jTextField1.getText());
if(strText.equals("0")){
jTextField1.setText("0");
}else{
jTextField1.setText("0");
}
}


 点击按键变色功能:

 //鼠标移动到“9”时按钮变为黄色
private void jButton9MouseMoved(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jButton9.setBackground(Color.YELLOW);
}
//鼠标从数字“9”移开是按钮变回灰色
private void jButton9MouseExited(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
jButton9.setBackground(Color.LIGHT_GRAY);
}
  







推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • 浅解XXE与Portswigger Web Sec
    XXE与PortswiggerWebSec​相关链接:​博客园​安全脉搏​FreeBuf​XML的全称为XML外部实体注入,在学习的过程中发现有回显的XXE并不多,而 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • 原文地址http://balau82.wordpress.com/2010/02/28/hello-world-for-bare-metal-arm-using-qemu/最开始时 ... [详细]
  • ①页面初始化----------收到客户端的请求,产生相应页面的Page对象,通过Page_Init事件进行page对象及其控件的初始化.②加载视图状态-------ViewSta ... [详细]
  • 作用域链迷惑性代码vara100;functiontest(){console.log(a);}functiontestFun(){vara200;test();}不假思索的想到出 ... [详细]
  • 前言:原本纠结于Web模板,选了Handlebars。后来发现页面都是弱逻辑的,不支持复杂逻辑表达式。几乎要放弃之际,想起了Javascript中ev ... [详细]
author-avatar
我想去海边6_414
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有