使用java开发简单计算器界面,并实现加、减、乘、除运算
来源:互联网 发布:iphone自动切换网络 编辑:程序博客网 时间:2024/05/31 04:04
最近 老师布置了java作业,开发一个计算器,并实现+ - * / 运算,我写 了一个。不知道我的思路对不对,希望路过的大神提供一点建议。一些简单的运算没有问题。问题是按照我的思路负数不知道怎么实现,也就是没有乘于一个负数,或加上一个负数,或减去一个负数,或除于一个负数的功能。为了给其他人参考方便,我把代码只写在了一个类里面。
以下是代码
package com.it.xiaojia;import java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.Image;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.ArrayList;import java.util.List;import javax.swing.*;public class Demo extends JFrame {private JFrame jf=new JFrame("Calculator"); //窗口private JPanel centerPanel=new JPanel(); //中间面板private JPanel bottomPanel=new JPanel(); //底部面板//中间三个按钮private JButton Backbtn=new JButton("Back");private JButton CEbtn=new JButton("CE");private JButton Cbtn=new JButton("C");//初始化功能键String[] nums={"7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"};private JButton btn7=new JButton(nums[0]);private JButton btn8=new JButton(nums[1]);private JButton btn9=new JButton(nums[2]);private JButton btnAdd=new JButton(nums[3]);private JButton btn4=new JButton(nums[4]);private JButton btn5=new JButton(nums[5]);private JButton btn6=new JButton(nums[6]);private JButton btnMimus=new JButton(nums[7]);private JButton btn1=new JButton(nums[8]);private JButton btn2=new JButton(nums[9]);private JButton btn3=new JButton(nums[10]);private JButton btnMultipus=new JButton(nums[11]);private JButton btn0=new JButton(nums[12]);private JButton btnDot=new JButton(nums[13]);private JButton btnResult=new JButton(nums[14]);private JButton btnDivide=new JButton(nums[15]);//单行输入文本框private JTextField txt=new JTextField(15);private List<String>lists=new ArrayList<String>(); //用来记录用户输入的数字和操作符//主函数,程序入口public static void main(String[] args){try {new Demo().init();} catch (Exception e) {System.out.println("程序异常终止");System.exit(0); //退出虚拟机}}//初始化public void init() throws Exception{//使用网格布局方式bottomPanel.setLayout(new GridLayout(4,4,3,3)); //左右上下间隔是3//将功能键添加到底部面板中bottomPanel.add(btn7);bottomPanel.add(btn8);bottomPanel.add(btn9);bottomPanel.add(btnAdd);bottomPanel.add(btn4);bottomPanel.add(btn5);bottomPanel.add(btn6);bottomPanel.add(btnMimus);bottomPanel.add(btn1);bottomPanel.add(btn2);bottomPanel.add(btn3);bottomPanel.add(btnMultipus);bottomPanel.add(btn0);bottomPanel.add(btnDot);bottomPanel.add(btnResult);bottomPanel.add(btnDivide);//将中间的三个按钮添加到中间面板centerPanel.add(Backbtn);centerPanel.add(CEbtn);centerPanel.add(Cbtn);jf.add(txt,BorderLayout.NORTH); //将单行文本框添加到窗口的 北部jf.add(centerPanel); //将中间面板添加到窗口中间(默认是中间)jf.add(bottomPanel,BorderLayout.SOUTH); //将底部面板添加到窗口的南部//为C按钮添加事件监听Cbtn.addActionListener(e->{lists.clear(); //将集合中的数据清零txt.setText(""); //将 文本域的 值设置为空});//为Back按钮添加事件监听 使用Lamdba表达式Backbtn.addActionListener(e->{String text=txt.getText(); //得到输入框文本if("".equals(text) || text.length()==1){ txt.setText(""); //如果是空文本或者文本长度为1,直接设为空return;}if(text.length()>1){ //如果文本的长度大于1就要向前截取text=text.substring(0,text.length()-1);txt.setText(text);}});//为CE按钮添加事件监听CEbtn.addActionListener(e->{//得到输入文本框String text=txt.getText();if("".equals(text)){return;}if("+".equals(text) || "-".equals(text) || "*".equals(text) || "/".equals(text)){//表示要把+ - * /清除,所以要把集合中的第一个数也移除集合(因为用户可能点了+的时候,就点CE键,此时如果再点数字键就会出现问题)lists.remove(0);}txt.setText(""); //把文本直接清掉});//为数字按钮添加监听事件 使用匿名内部类ActionListener numBtnListener=new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {//得到输入文本框的内容String text=txt.getText();//判断有没有这句话 (0不能做分母,请清零后重试),如果有 ,当点击数字按钮的时候要它消失if("除数不能为0".equals(text)){txt.setText(e.getActionCommand());return;}//如果第一个数是0,就不能输入其他数字了,只能输入小数点了if("0".equals(text)){return;}if("".equals(text)){ //当文本域中没数据的时候,把当前点击的数字显示上去txt.setText(e.getActionCommand());}else{//如果当前输入框有数据,并且是操作符时,记录下该操作符if(text.equals("+") || text.equals("-") || text.equals("*") || text.equals("/")){lists.add(text); //将操作符添加到集合中txt.setText("");text=""; //将得到的文本符空,也就是将+或-或 *或/赋空值}text+=e.getActionCommand();txt.setText(text);}}};//为数字注册 监听器btn1.addActionListener(numBtnListener);btn2.addActionListener(numBtnListener);btn3.addActionListener(numBtnListener);btn4.addActionListener(numBtnListener);btn5.addActionListener(numBtnListener);btn6.addActionListener(numBtnListener);btn7.addActionListener(numBtnListener);btn8.addActionListener(numBtnListener);btn9.addActionListener(numBtnListener);//为0按钮添加事件监听btn0.addActionListener(e->{//得到输入文本框String text=txt.getText();if("0".equals(text)){ //如果第一个数是0,不能再出现0了return;}//如果出现操作符,就记录下来if("+".equals(text) || "-".equals(text) || "*".equals(text) || "/".equals(text)){lists.add(text);text=""; //把操作符情况}text+=e.getActionCommand();txt.setText(text);});//为点 .按钮 添加事件监听 使用Lamdba表达式btnDot.addActionListener(e->{//得到输入文本框String text=txt.getText();if("".equals(text)){return;}//判断文本是否为+ - * / .if("+".equals(text) || "-".equals(text) || "*".equals(text) || "/".equals(text)){return;}//如果该数字后面已经有小数点了,那么就不能连续出现两次小数点了if(text.contains(".")){return;}text+=e.getActionCommand();txt.setText(text); //设置进去});//为+-*/添加事件监听 使用匿名内部类 ActionListener operationBtnListener=new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {//获取输入文本框内的内容String text=txt.getText();if("".equals(text)){return;}if("+".equals(text) || "-".equals(text) || "*".equals(text) || "/".equals(text)){return;}//将内容添加到集合中lists.add(text);//将输入框清空txt.setText("");//把按钮上面的字显示进去txt.setText(e.getActionCommand());}};//为* - + /注册监听器btnAdd.addActionListener(operationBtnListener);btnMimus.addActionListener(operationBtnListener);btnMultipus.addActionListener(operationBtnListener);btnDivide.addActionListener(operationBtnListener);//为 =按钮添加事件监听ActionListener resultBtnListener=new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e) {//判断集合中的数据if(lists.isEmpty()){return;}//获取文本输入框的内容String text=txt.getText();if("".equals(txt) || "+".equals(text) || "-".equals(text) || "*".equals(text) || "/".equals(text)){return;}//将其添加到集合中lists.add(text);if(lists.size()<3){return;}String one=lists.get(0); //得到集合中的第一个数String two=lists.get(1); //得到集合中的第二个数String three=lists.get(2); //得到集合中的第三个数switch(two){case "+":double i=Double.parseDouble(one);double j=Double.parseDouble(three);txt.setText((i+j)+""); //显示结果break;case "-":double x=Double.parseDouble(one);double y=Double.parseDouble(three);txt.setText((x-y)+""); //显示结果break;case "*":double a=Double.parseDouble(one);double b=Double.parseDouble(three);txt.setText((a*b)+"");break;case "/":double k=Double.parseDouble(one);double h=Double.parseDouble(three);if(h==0){txt.setText("除数不能为0");lists.clear();return;}txt.setText((k/h)+"");break;}//将集合中的数据清空lists.clear();}};//为=等号按钮注册监听器btnResult.addActionListener(resultBtnListener);//自定义窗口的图标ImageIcon image=new ImageIcon("image/girl.jpg"); //图片位置image.setImage(image.getImage().getScaledInstance(30,30,Image.SCALE_DEFAULT));jf.setIconImage(image.getImage());//设置UI的风格为NimbusUIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");//更新f窗口内所有组件的UISwingUtilities.updateComponentTreeUI(jf.getContentPane());jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//点X关闭窗口jf.setLocation(400, 200); //初始化时定位jf.setResizable(false); //禁止拖曳改变窗口大小jf.pack(); //让窗口的大小自适应jf.setVisible(true); //显示窗口}}
2,下面是运行效果
0 0
- 使用java开发简单计算器界面,并实现加、减、乘、除运算
- 简单计算器 (加 减 乘 除 清零)
- java String实现加,减,乘,除运算。
- 用C语言实现简单的计算器(加、减、乘、除)
- 使用 HTML 、JavaScript 创建一个简单的计算器,包含加、减、乘、除四个功能
- java实现大数加、减、乘、除
- 利用位运算实现加、减、乘、除
- OC中使用UI自定义控件实现计算器的设计(版本1简单的加减乘除,连加,连减,连除,连乘)
- 浮点数加,减,乘,除运算
- 使用BigDecimal进行加、减、乘、除
- 实现一个正整数加、减、乘、除四则混合运算求值方法
- 用位运算实现加、减、乘、除、取余_demo(未完成)
- 大数的加,减,乘,除,乘方运算
- linux下的shell运算(加、减、乘、除)
- 矩阵运算(加,减,乘,除,快速幂)
- linux下的shell运算(加、减、乘、除)
- 大数加、减、乘、除和求余运算
- C语言中,位运算完成 加、减、乘、除
- 线索化二叉树的创建及遍历
- [leetcode: Python]206.Reverse Linked List
- 【GDOI 2017】【JZOJ 1502】小学生语文题
- cannot node find module “” (gulp)
- 开发人员的必备技能
- 使用java开发简单计算器界面,并实现加、减、乘、除运算
- 10.2 运算符重载函数作为类成员函数和友元函数
- Java8内存模型—永久代(PermGen)和元空间(Metaspace)
- 大三上备忘录
- ARP协议报文格式及ARP表
- mongodb按照时间查询
- method chaining 方法链
- 求100W个数中的前K个最大的数
- 递归下降分析