Java简单的计算器编程
2021/9/11 20:06:59
本文主要是介绍Java简单的计算器编程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算、
设计的计算器应用程序可以完成家法、减法、乘法、除法和取余运算。
以下是效果展示图:
详细代码:
package 计算器; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import java.awt.GridLayout; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class 计算器 { String number1; //第一个参与运算的数字 变量 string是数据类型 整个是定义属性 String number2; //第二个参与运算的数字 String operate; //数字的运算符 String number=""; //文本框当中显示的内容 double result; //两个数字的结果,这个结果会存到文本框当中 JFrame jf; //计算机界面的窗体 JTextField jtf; //文本域输入框 JButton[]jbs; //存放16个按钮组件的数组 private JButton clear; //清空按钮组件 public 计算器 () { jf = new JFrame("计算器");// 新建窗体组件叫jf jtf = new JTextField(15);//设置文本域组件 jbs = new JButton[16];//初始化数组 clear = new JButton("清空"); //设置“清空”按钮 String str = "123+456-789*0.=/"; for (int i = 0;i <jbs.length;i++) { //利用for循环,依次把数字写到文本处 jbs[i] = new JButton(str.charAt(i) + ""); //在for循环当中调用每一个按钮的addActionListener方法 jbs[i].addActionListener(new ButClick()); //添加了事件监听机制,将我们创建的ButClick对象以参数的形式传入,这样就给每一个按钮添加了事件监听器 } init(); //在计算器构造方法当中调用init方法,也就是说在创建对象的时候,他会自动的调用init方法,从而将组件添加到相应的位置 jf.setSize(500,400); //窗口界面的大小 jf.setLocation(600,300); jf.setVisible(true);//调用jf的setVisible方法,使它显示在桌面上 可见 } public void init(){ //BorderLayout layout=new BorderLayout(); //创建BorderLayout布局(方位布局是上下左右中) jf.setLayout(new BorderLayout()); //将frame容器设为Borderlayout 方位布局 JPanel panel1=new JPanel(); //创建一个JPanle1容器 JPanel panel2=new JPanel(); //创建一个JPanle2容器 panel1.setLayout(new FlowLayout()); //将panel1容器设为FlowLayout 流布局 panel1.add(jtf);//添加文本域 panel1.add(clear);//添加清空按钮 panel2.setLayout(new GridLayout(4,4)); //将panel2容器设为GridLayout 并且是4行4列的表格布局 for (int i = 0;i <jbs.length;i++) { //使用for循环,将数字和符号添加到panel2容器中 panel2.add(jbs[i]); //循环添加每一个按钮对象 通过下标位置来获取每一个按钮对象 } //panel1.setLayout(new BorderLayout()); //将panel容器设为Borderlayout 布局 jf.add(panel1,BorderLayout.NORTH); //将panel1添加在窗体的最上方 jf.add(panel2,BorderLayout.CENTER); //将panel添加在窗体的最中间 } //内部类的方式实现监听器 class ButClick implements ActionListener { //用ButClick类实现 ActionListener的接口 implen实现 public void actionPerformed(ActionEvent e) { //并且在ButClink类当中实现ActionListenerjiekou当中的ActionPerformed的方法,在ActionPerformed的方法实现具体的运算逻辑, //来实现计算业务逻辑 //获取按钮所对应的值,也就是我们按下的按钮所对应的标签值 //获取标签值:调取ActionEvent对象的GetSource方法来获取相对应的主键 主键就是按钮 String text = ((JButton)e.getSource()).getText(); //需要进行强制类型转换,把主键转换成JButton;调用JButton中getText方法,来获取上面对应的标签值,并且赋值给Sreing text变量 //判断是符号还是数字 if(text.equals ("=")){ //equals是比较相等 if(operate.equals("+")){ //number1和number2都是string类型,需要进行字符串数字类型的转换 result = Double.parseDouble(number1) + Double.parseDouble(number2); jtf.setText(result+""); //setText只能传入字符串类型的数字,将double类型的result变成字符串类型的数字,拼接一个空字符串 }else if (operate.equals("-")){ result = Double.parseDouble(number1) - Double.parseDouble(number2); jtf.setText(result+""); }else if (operate.equals("*")) { result = Double.parseDouble(number1) * Double.parseDouble(number2); jtf.setText(result + ""); }else if (operate.equals("/")) { result = Double.parseDouble(number1) / Double.parseDouble(number2); jtf.setText(result + ""); } number = ""; //相当于清空按钮,使文本域恢复 }else if(text.equals("+")){ operate = "+"; //首先将operate赋值为“+” number = number + text; jtf.setText(number); }else if(text.equals("-")){ operate = "-"; number = number + text; jtf.setText(number); }else if(text.equals("*")){ operate = "*"; number = number + text; jtf.setText(number); }else if(text.equals("/")){ operate = "/"; number = number + text; jtf.setText(number); }else{ //将text获取到的数字赋值给number1还是number2,需要做一个判断 if(number1 == null){ number1 = text; }else{ number2 = text; } number = number+text; //显示到文本域当中 字符串拼接 jtf.setText(number);//调用jtf.setText来对文本域内容进行设置,将number传入 } } } public static void main(String[] args){ 计算器 j = new 计算器(); //在main方法中创建计算器对象 实例化 } }
这篇关于Java简单的计算器编程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?