Java课程设计 计算器(用JAVA编写一个简单的计算器,要求如下)

2024-01-06 01:40:03 :113

java课程设计 计算器(用JAVA编写一个简单的计算器,要求如下)

本篇文章给大家谈谈java课程设计 计算器,以及用JAVA编写一个简单的计算器,要求如下对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

用JAVA编写一个简单的计算器,要求如下

然后 通过输入 显示结果,比如说:

以下是上图计算器的代码:

  • package Computer;  

  • import java.awt.BorderLayout;  

  • import java.awt.Color;  

  • import java.awt.Container;  

  • import java.awt.Font;  

  • import java.awt.GridLayout;  

  • import java.awt.event.ActionEvent;  

  • import java.awt.event.ActionListener;  

  • import java.util.Stack;  

  • import javax.swing.JApplet;  

  • import javax.swing.JButton;  

  • import javax.swing.JFrame;  

  • import javax.swing.JPanel;  

  • import javax.swing.JTextField;  

  • public class Count extends JApplet implements ActionListener  

  • {  

  • /** 

  • *  

  • */  

  • private static final long serialVersionUID = 1L;  

  • private JTextField textField = new JTextField("请输入");  

  • String operator = "";//操作  

  • String input = "";//输入的 式子  

  • boolean flag =  true;  

  • //  boolean flag1 = true;  

  • //  boolean flag2 = true;  

  • public void init()//覆写Applet里边的init方法  

  • {  

  • Container C = getContentPane();  

  • JButton b;  

  • JPanel panel = new JPanel();  

  • C.add(textField, BorderLayout.NORTH);  

  • C.add(panel,BorderLayout.CENTER);  

  • panel.setLayout(new GridLayout(4, 4,5,5));  

  • String name={"7","8","9","+","4","5","6","-","1","2","3","*","0","C","=","/"};//设置 按钮  

  • for(int i=0;i《16;i++)//添加按钮  

  • {  

  • b);  

  • b.setBackground(new Color(192,192,192));  

  • b.setForeground(Color.BLUE);//数字键 设置为 蓝颜色  

  • if(i%4==3)  

  • b.setForeground(Color.RED);  

  • b.setFont(new Font("宋体",Font.PLAIN,16));//设置字体格式  

  • panel.add(b);  

  • b.addActionListener(this);  

  • }  

  • b.setForeground(Color.RED);//非数字键,即运算键设置为红颜色  

  • b.setForeground(Color.RED);  

  • }  

  • public void actionPerformed(ActionEvent e)   

  • {  

  • int cnt = 0;  

  • String actionCommand = e.getActionCommand();  

  • if(actionCommand.equals("+")||actionCommand.equals("-")||actionCommand.equals("*") ||actionCommand.equals("/"))  

  • input +=" "+actionCommand+" ";//设置输入,把输入的样式改成 需要的样子  

  • else if(actionCommand.equals("C"))  

  • input = "";  

  • else if(actionCommand.equals("="))//当监听到等号时,则处理 input  

  • {  

  • input+= "="+compute(input);  

  • textField.setText(input);  

  • input="";  

  • cnt = 1;  

  • }  

  • else  

  • input += actionCommand;//数字为了避免多位数的输入 不需要加空格  

  • if(cnt==0)  

  • textField.setText(input);  

  • }  

  • private String compute(String input)//即1237 的 样例  

  • {  

  • String str;  

  • str = input.split(" ");  

  • Stack《Double》 s = new Stack《Double》();  

  • double m = Double.parseDouble(str);  

  • s.push(m);  

  • for(int i=1;i《str.length;i++)  

  • {  

  • if(i%2==1)    

  • {    

  • if(str.compareTo("+")==0)    

  • {    

  • double help = Double.parseDouble(str);    

  • s.push(help);    

  • }    

  • if(str.compareTo("-")==0)    

  • {    

  • double help = Double.parseDouble(str);    

  • s.push(-help);    

  • }    

  • if(str.compareTo("*")==0)    

  • {    

  • double help = Double.parseDouble(str);    

  • double ans = s.peek();//取出栈顶元素    

  • s.pop();//消栈    

  • ans*=help;    

  • s.push(ans);    

  • }    

  • if(str.compareTo("/")==0)    

  • {    

  • double help = Double.parseDouble(str);    

  • double ans = s.peek();    

  • s.pop();    

  • ans/=help;    

  • s.push(ans);    

  • }    

  • }    

  • }    

  • double ans = 0d;    

  • while(!s.isEmpty())    

  • {    

  • ans+=s.peek();    

  • s.pop();    

  • }    

  • String result = String.valueOf(ans);  

  • return result;  

  • }  

  • public static void main(String args)  

  • {  

  • JFrame frame = new JFrame("Count");  

  • Count applet = new Count();  

  • frame.getContentPane().add(applet, BorderLayout.CENTER);  

  • applet.init();//applet的init方法  

  • applet.start();//线程开始  

  • frame.setSize(350, 400);//设置窗口大小  

  • frame.setVisible(true);//设置窗口可见  

  • }  

  • }  

用JAVA编写一个计算器

import java.awt.BorderLayout;import java.awt.Color;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JTextField;import javax.swing.SwingConstants;public class Jisuanqi extends JFrame implements ActionListener {/*** */private static final long serialVersionUID = 1L;Result result = new Result(); // 定义text的面板Number_Key number_key = new Number_Key(); // 定义按钮面板// 当点击按钮+、-、*、/时,com = trueboolean com = false;// 当i=0时说明是我们第一次输入,字符串text不会累加int i = 0;// 存放text的内容String text = "";// 存放点击按钮+、-、*、/之前的数值double defbutton = 0;// +、-、*、/的代号分别为1,2,3,4int symbol = 0;// 构造函数Jisuanqi() {super("WangJiao"); // 设定标题setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设定关闭窗体时退出程序JPanel pane = new JPanel(); // 定义主面板pane.setLayout(new BorderLayout());setBounds(380, 220, 30, 80); // 前两个参数是在屏幕上显示的坐标,后两个是大小// 替换图标ImageIcon icon = new ImageIcon("F:1.GIF");// Jisuanqi.class.getResource("APPLE.GIF")// );setIconImage(icon.getImage());pane.add(result, BorderLayout.NORTH);pane.add(number_key, BorderLayout.CENTER);pane.add(number_key.equal, BorderLayout.SOUTH);number_key.one.addActionListener(this); // 对1按钮添加监听事件number_key.two.addActionListener(this); // 对2按钮添加监听事件number_key.three.addActionListener(this); // 对3按钮添加监听事件number_key.four.addActionListener(this); // 对4按钮添加监听事件number_key.five.addActionListener(this); // 对5按钮添加监听事件number_key.six.addActionListener(this); // 对6按钮添加监听事件number_key.seven.addActionListener(this); // 对7按钮添加监听事件number_key.eight.addActionListener(this); // 对8按钮添加监听事件number_key.nine.addActionListener(this); // 对9按钮添加监听事件number_key.zero.addActionListener(this); // 对0按钮添加监听事件number_key.ce.addActionListener(this); // 对置零按钮添加监听事件number_key.plus.addActionListener(this); // 对+按钮添加监听事件number_key.equal.addActionListener(this); // 对=按钮添加监听事件number_key.sub.addActionListener(this); // 对-按钮添加监听事件number_key.mul.addActionListener(this); // 对*按钮添加监听事件number_key.div.addActionListener(this); // 对/按钮添加监听事件number_key.point.addActionListener(this); // 对.按钮添加监听事件setContentPane(pane);pack(); // 初始化窗体大小为正好盛放所有按钮}// 各个按钮触发的事件public void actionPerformed(ActionEvent e) {/** 如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true 如果没有com=* false;或者是否点击数字键,如果是i = 1,如果没有 i = 0;*/if (e.getSource() == number_key.one) {if (com || i == 0) {result.text.setText("1");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "1");}} else if (e.getSource() == number_key.two) {if (com || i == 0) {result.text.setText("2");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "2");}} else if (e.getSource() == number_key.three) {if (com || i == 0) {result.text.setText("3");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "3");}} else if (e.getSource() == number_key.four) {if (com || i == 0) {result.text.setText("4");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "4");}} else if (e.getSource() == number_key.five) {if (com || i == 0) {result.text.setText("5");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "5");}} else if (e.getSource() == number_key.six) {if (com || i == 0) {result.text.setText("6");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "6");}} else if (e.getSource() == number_key.seven) {if (com || i == 0) {result.text.setText("7");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "7");}} else if (e.getSource() == number_key.eight) {if (com || i == 0) {result.text.setText("8");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "8");}} else if (e.getSource() == number_key.nine) {if (com || i == 0) {result.text.setText("9");com = false;i = 1;} else {text = result.text.getText();result.text.setText(text + "9");}}/** 对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是* 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 加0;否则保持原来的数值不变*/else if (e.getSource() == number_key.zero) { // result.text.getText()是得到text里内容的意思if (com || i == 0) {result.text.setText("0");com = false;i = 1;} else {text = result.text.getText();if (Float.parseFloat(text) 》 0 || Float.parseFloat(text) 《 0) { // Float.parseFloat(text)就是类型转换了,下面都是一样result.text.setText(text + "0");} else {if (text.trim().indexOf(".") == -1) {result.text.setText(text);} else {result.text.setText(text + "0");}}}} else if (e.getSource() == number_key.ce) {result.text.setText("0");i = 0;com = true;// text = "";defbutton = 0;}/** 本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, 不存在就添加.*/else if (e.getSource() == number_key.point) {if (com || i == 0) {result.text.setText("0.");com = false;i = 1;} else {text = result.text.getText();if (text.trim().indexOf(".") == -1) {result.text.setText(text + ".");} else {result.text.setText(text);}}} // 获得点击+之前的数值else if (e.getSource() == number_key.plus) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 1;} // 获得点击-之前的数值else if (e.getSource() == number_key.sub) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 2;} // 获得点击*之前的数值else if (e.getSource() == number_key.mul) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());System.out.println(defbutton);symbol = 3;} // 获得点击/之前的数值else if (e.getSource() == number_key.div) {com = true;i = 0;defbutton = Double.parseDouble(result.text.getText());symbol = 4;} else if (e.getSource() == number_key.equal) {switch (symbol) {case 1: { // 计算加法double ad = defbutton+ Double.parseDouble(result.text.getText());result.text.setText(ad + "");i = 0;text = "";break;}case 2: { // 计算减法double ad = defbutton- Double.parseDouble(result.text.getText());result.text.setText(String.valueOf(ad));i = 0;text = "";break;}case 3: { // 计算乘法double ad = defbutton* Double.parseDouble(result.text.getText());result.text.setText(ad + "");i = 0;text = "";break;}case 4: { // 计算除法double ad = defbutton/ Double.parseDouble(result.text.getText());result.text.setText(ad + "");i = 0;text = "";break;}}System.out.println(com);}System.out.println(result.text.getText());}@SuppressWarnings("deprecation")public static void main(String args) {Jisuanqi loveyou = new Jisuanqi();loveyou.show();}}// 计算器数字按钮定义面板class Number_Key extends JPanel {/*** */private static final long serialVersionUID = 1L;JButton zero = new JButton("0"); // 数字键0JButton one = new JButton("1"); // 数字键1JButton two = new JButton("2"); // 数字键2JButton three = new JButton("3"); // 数字键3JButton four = new JButton("4"); // 数字键4JButton five = new JButton("5"); // 数字键5JButton six = new JButton("6"); // 数字键6JButton seven = new JButton("7"); // 数字键7JButton eight = new JButton("8"); // 数字键8JButton nine = new JButton("9"); // 数字键9JButton plus = new JButton("+");JButton sub = new JButton("-");JButton mul = new JButton("*");JButton div = new JButton("/");JButton equal = new JButton("=");JButton ce = new JButton("清零"); // 置零键JButton point = new JButton(".");Number_Key() {setLayout(new GridLayout(4, 4, 1, 1)); // 定义布局管理器为网格布局setBackground(Color.blue); // 设置背景颜色// 添加按钮add(one);add(two);add(three);add(four);add(five);add(six);add(seven);add(eight);add(nine);add(zero);add(plus);add(sub);add(mul);add(div);add(point);add(equal);add(ce);}}// 计算器显示结果的窗体class Result extends JPanel {/*** */private static final long serialVersionUID = 1L;// text先是输入和结果JTextField text = new JTextField("0");@SuppressWarnings("deprecation")Result() { // 讲输入的数字或得到的结果在text的右边显示text.setHorizontalAlignment(SwingConstants.RIGHT);text.enable(false); // 文本框不能setLayout(new BorderLayout()); // 设定布局管理器边框布局add(text, BorderLayout.CENTER); // text放置在窗体的中间}}直接复制 保存成Jisuanqi .java可以直接运行了

求一个用JAVA编写的计算器程序(1)实现简单加、减、乘、除的运算 (

publicMyCalculator(){f=newJFrame("计算器ByMdou");ContainercontentPane=f.getContentPane();/****************菜单的创建开始**************************************/JMenuBarmBar=newJMenuBar();mBar.setOpaque(true);mEdit=newJMenu("(E)");mEdit.setMnemonic(KeyEvent.VK_E);mCopy=newJMenuItem("复制(C)");mEdit.add(mCopy);mPaste=newJMenuItem("粘贴(P)");mEdit.add(mPaste);mView=newJMenu("查看(V)");mView.setMnemonic(KeyEvent.VK_V);mView.add(newJMenuItem("标准型"));mView.add(newJMenuItem("科学型"));mView.addSeparator();mView.add(newJMenuItem("查看分组"));mHelp=newJMenu("帮助(H)");mHelp.setMnemonic(KeyEvent.VK_H);mHelp.add(newJMenuItem("帮助主题"));mHelp.addSeparator();mHelp.add(newJMenuItem("关于计算器"));mBar.add(mEdit);mBar.add(mView);mBar.add(mHelp);f.setJMenuBar(mBar);contentPane.setLayout(newBorderLayout());JPanelpTop=newJPanel();tResult=newJTextField("0.",26);tResult.setHorizontalAlignment(JTextField.RIGHT);tResult.setEditable(false);pTop.add(tResult);contentPane.add(pTop,BorderLayout.NORTH);JPanelpBottom=newJPanel();pBottom.setLayout(newBorderLayout());JPanelpLeft=newJPanel();pLeft.setLayout(newGridLayout(5,1,3,3));bM=newJButton("");bM.setEnabled(false);pLeft.add(bM);bOther=newJButton("MC");bOther.addActionListener(this);bOther.setForeground(Color.RED);bOther.setMargin(newInsets(3,2,3,2));pLeft.add(bOther);bOther=newJButton("MR");bOther.addActionListener(this);bOther.setForeground(Color.RED);bOther.setMargin(newInsets(3,2,3,2));pLeft.add(bOther);bOther=newJButton("MS");bOther.addActionListener(this);bOther.setForeground(Color.RED);bOther.setMargin(newInsets(3,2,3,2));pLeft.add(bOther);bOther=newJButton("M+");bOther.addActionListener(this);bOther.setForeground(Color.RED);bOther.setMargin(newInsets(3,2,3,2));pLeft.add(bOther);

JAVA简易计算器

import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListener{String s="",s1;double d1,d2;JFrame jf = new JFrame("小计算器by Graduate") ;JTextField tf = new JTextField();public void init()//实现计算器界面{Container c=jf.getContentPane();tf.setHorizontalAlignment(JTextField.RIGHT);//文本框c.add(tf,"North");JPanel pn3 = new JPanel(new BorderLayout());c.add(pn3,"Center");JPanel pn2 = new JPanel();//功能键界面(清除键和关闭键)pn2.setLayout(new BorderLayout());JPanel pn1 = new JPanel();//运算界面pn1.setLayout(new GridLayout(4,4));pn3.add(pn2,"North");pn3.add(pn1);//设置按钮JButton b = new JButton("CLEAR");b.setToolTipText("请按清除键!");//设置清零键b.setForeground(Color.RED);//设置字体颜色b.setBackground(Color.YELLOW);//设置背景色b.addActionListener(this);pn2.add(b,"Center");b = new JButton("OFF");b.setToolTipText("请按退出键!");//设置off键,点击退出应用程序b.addActionListener(this);b.setForeground(Color.RED);//字体颜色b.setBackground(Color.ORANGE);//背景色pn2.add(b,"East");b = new JButton("1");//add butten 1b.addActionListener(this);pn1.add(b);b = new JButton("2");//add butten 2b.addActionListener(this);pn1.add(b);b = new JButton("3");//add butten 3b.addActionListener(this);pn1.add(b);b = new JButton("+");//add butten +b.setForeground(Color.BLUE);//设置字体颜色b.addActionListener(this);pn1.add(b);b = new JButton("4");//add butten 4b.addActionListener(this);pn1.add(b);b = new JButton("5");//add butten 5b.addActionListener(this);pn1.add(b);b = new JButton("6");//add button 6b.addActionListener(this);pn1.add(b);b = new JButton("-");//add button -b.setForeground(Color.BLUE);//设置字体颜色b.addActionListener(this);pn1.add(b);b = new JButton("7");//add button 7b.addActionListener(this);pn1.add(b);b = new JButton("8");//add button 8b.addActionListener(this);pn1.add(b);b = new JButton("9");//add button 9b.addActionListener(this);pn1.add(b);b = new JButton("*");//add button *b.setForeground(Color.BLUE);//设置字体颜色b.addActionListener(this);pn1.add(b);b = new JButton("0");//add button 0b.addActionListener(this);pn1.add(b);b = new JButton(".");//add button .b.addActionListener(this);pn1.add(b);b = new JButton("=");//add button =b.setForeground(Color.RED);//设置字体颜色b.addActionListener(this);pn1.add(b);b = new JButton("\\");//add button \b.setForeground(Color.BLUE);//设置字体颜色b.addActionListener(this);pn1.add(b);jf.setSize(300,300);//设置大小jf.setVisible(true);//设置为可视}//处理按钮按下时的动作,进行相应的处理public void actionPerformed(ActionEvent e){String command = e.getActionCommand();tf.setText(tf.getText()+command);if(command.equals("CLEAR")) //清零键 按下时返回初始状态{s1=null;s="";tf.setText("");//记录输入值的变量清空}else if(command.equals("OFF")) System.exit(0);//off键 关闭应用程序else if(!command.equals("*")&&!command.equals("\\")&&!command.equals("+")&&!command.equals("-")&&!command.equals("="))//判断输入是否为数字{if(s1==null)//判断输入是否为第一个s1 = command;else s1+=command;d1 = new Double(s1).doubleValue();//字符串型转换为双精度型,还原输入数字try{if(s.equals("+")) d1 = d1+d2;//加法运算else if(s.equals("-")) d1 = d2-d1;//减法运算else if(s.equals("*")) d1 = d1*d2;//乘法运算else if(s.equals("\\"))d1 = d2/d1;//除法运算}catch(Exception ex){tf.setText("Error");//错误显示"Error"System.out.println(ex.getMessage());}}else if(!command.equals("=")) //判断输入是否为+ - * \{s = command;s1 = null;d2 = d1;}else//输入=时,显示运算结果{tf.setText(tf.getText()+d1);}}public static void main(String args){new Calculator().init();}}

编写一个JAVA计算器程序

import java.awt.*; import java.awt.event.*; import java.lang.*; import javax.swing.*; public class Counter extends Frame { //声明三个面板的布局 GridLayout gl1,gl2,gl3; Panel p0,p1,p2,p3; JTextField tf1; TextField tf2; Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26; StringBuffer str;//显示屏所显示的字符串 double x,y;//x和y都是运算数 int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/" static double m;//记忆的数字 public Counter() { gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局 gl2=new GridLayout(4,1,0,15); gl3=new GridLayout(4,5,10,15); tf1=new JTextField(27);//显示屏 tf1.setHorizontalAlignment(JTextField.RIGHT); tf1.setEnabled(false); tf1.setText("0"); tf2=new TextField(10);//显示记忆的索引值 tf2.setEditable(false); //实例化所有按钮、设置其前景色并注册监听器 b0=new Button("Backspace"); b0.setForeground(Color.red); b0.addActionListener(new Bt()); b1=new Button("CE"); b1.setForeground(Color.red); b1.addActionListener(new Bt()); b2=new Button("C"); b2.setForeground(Color.red); b2.addActionListener(new Bt()); b3=new Button("MC"); b3.setForeground(Color.red); b3.addActionListener(new Bt()); b4=new Button("MR"); b4.setForeground(Color.red); b4.addActionListener(new Bt()); b5=new Button("MS"); b5.setForeground(Color.red); b5.addActionListener(new Bt()); b6=new Button("M+"); b6.setForeground(Color.red); b6.addActionListener(new Bt()); b7=new Button("7"); b7.setForeground(Color.blue); b7.addActionListener(new Bt()); b8=new Button("8"); b8.setForeground(Color.blue); b8.addActionListener(new Bt()); b9=new Button("9"); b9.setForeground(Color.blue); b9.addActionListener(new Bt()); b10=new Button("/"); b10.setForeground(Color.red); b10.addActionListener(new Bt()); b11=new Button("sqrt"); b11.setForeground(Color.blue); b11.addActionListener(new Bt()); b12=new Button("4"); b12.setForeground(Color.blue); b12.addActionListener(new Bt()); b13=new Button("5"); b13.setForeground(Color.blue); b13.addActionListener(new Bt()); b14=new Button("6"); b14.setForeground(Color.blue); b14.addActionListener(new Bt()); b15=new Button("*"); b15.setForeground(Color.red); b15.addActionListener(new Bt()); b16=new Button("%"); b16.setForeground(Color.blue); b16.addActionListener(new Bt()); b17=new Button("1"); b17.setForeground(Color.blue); b17.addActionListener(new Bt()); b18=new Button("2"); b18.setForeground(Color.blue); b18.addActionListener(new Bt()); b19=new Button("3"); b19.setForeground(Color.blue); b19.addActionListener(new Bt()); b20=new Button("-"); b20.setForeground(Color.red); b20.addActionListener(new Bt()); b21=new Button("1/X"); b21.setForeground(Color.blue); b21.addActionListener(new Bt()); b22=new Button("0"); b22.setForeground(Color.blue); b22.addActionListener(new Bt()); b23=new Button("+/-"); b23.setForeground(Color.blue); b23.addActionListener(new Bt()); b24=new Button("."); b24.setForeground(Color.blue); b24.addActionListener(new Bt()); b25=new Button("+"); b25.setForeground(Color.red); b25.addActionListener(new Bt()); b26=new Button("="); b26.setForeground(Color.red); b26.addActionListener(new Bt()); //实例化四个面板 p0=new Panel(); p1=new Panel(); p2=new Panel(); p3=new Panel(); //创建一个空字符串缓冲区 str=new StringBuffer(); //添加面板p0中的组件和设置其在框架中的位置和大小 p0.add(tf1); p0.setBounds(10,25,300,40); //添加面板p1中的组件和设置其在框架中的位置和大小 p1.setLayout(gl1); p1.add(tf2); p1.add(b0); p1.add(b1); p1.add(b2); p1.setBounds(10,65,300,25); //添加面板p2中的组件并设置其的框架中的位置和大小 p2.setLayout(gl2); p2.add(b3); p2.add(b4); p2.add(b5); p2.add(b6); p2.setBounds(10,110,40,150); //添加面板p3中的组件并设置其在框架中的位置和大小 p3.setLayout(gl3);//设置p3的布局 p3.add(b7); p3.add(b8); p3.add(b9); p3.add(b10); p3.add(b11); p3.add(b12); p3.add(b13); p3.add(b14); p3.add(b15); p3.add(b16); p3.add(b17); p3.add(b18); p3.add(b19); p3.add(b20); p3.add(b21); p3.add(b22); p3.add(b23); p3.add(b24); p3.add(b25); p3.add(b26); p3.setBounds(60,110,250,150); //设置框架中的布局为空布局并添加4个面板 setLayout(null); add(p0); add(p1); add(p2); add(p3); setResizable(false);//禁止调整框架的大小 //匿名类关闭窗口 addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e1) { System.exit(0); } }); setBackground(Color.lightGray); setBounds(100,100,320,280); setVisible(true); } //构造监听器 class Bt implements ActionListener { public void actionPerformed(ActionEvent e2) { try{ if(e2.getSource()==b1)//选择"CE"清零 { tf1.setText("0");//把显示屏清零 str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数 } else if(e2.getSource()==b2)//选择"C"清零 { tf1.setText("0");//把显示屏清零 str.setLength(0); } else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数 { x=Double.parseDouble(tf1.getText().trim()); tf1.setText(""+(-x)); } else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值 { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0);//清空缓冲区以便接收新的另一个运算数 y=0d; z=0; } else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值 { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0); y=0d; z=1; } else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值 { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0); y=0d; z=2; } else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值 { x=Double.parseDouble(tf1.getText().trim()); str.setLength(0); y=0d; z=3; } else if(e2.getSource()==b26)//单击等号按钮输出计算结果 { str.setLength(0); switch(z) { case 0 : tf1.setText(""+(x+y));break; case 1 : tf1.setText(""+(x-y));break; case 2 : tf1.setText(""+(x*y));break; case 3 : tf1.setText(""+(x/y));break; } } else if(e2.getSource()==b24)//单击"."按钮输入小数 { if(tf1.getText().trim().indexOf(′.′)!=-1)//判断字符串中是否已经包含了小数点 { } else//如果没数点有小 { if(tf1.getText().trim().equals("0"))//如果初时显示为0 { str.setLength(0); tf1.setText((str.append("0"+e2.getActionCommand())).toString()); } else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作 { } else { tf1.setText(str.append(e2.getActionCommand()).toString()); } } y=0d; } else if(e2.getSource()==b11)//求平方根 { x=Double.parseDouble(tf1.getText().trim()); tf1.setText("数字格式异常"); if(x《0) tf1.setText("负数没有平方根"); else tf1.setText(""+Math.sqrt(x)); str.setLength(0); y=0d; } else if(e2.getSource()==b16)//单击了"%"按钮 { x=Double.parseDouble(tf1.getText().trim()); tf1.setText(""+(0.01*x)); str.setLength(0); y=0d; } else if(e2.getSource()==b21)//单击了"1/X"按钮 { x=Double.parseDouble(tf1.getText().trim()); if(x==0) { tf1.setText("除数不能为零"); } else { tf1.setText(""+(1/x)); } str.setLength(0); y=0d; } else if(e2.getSource()==b3)//MC为清除内存 { m=0d; tf2.setText(""); str.setLength(0); } else if(e2.getSource()==b4)//MR为重新调用存储的数据 { if(tf2.getText().trim()!="")//有记忆数字 { tf1.setText(""+m); } } else if(e2.getSource()==b5)//MS为存储显示的数据 { m=Double.parseDouble(tf1.getText().trim()); tf2.setText("M"); tf1.setText("0"); str.setLength(0); } else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR { m=m+Double.parseDouble(tf1.getText().trim()); } else//选择的是其他的按钮 { if(e2.getSource()==b22)//如果选择的是"0"这个数字键 { if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作 { } else { tf1.setText(str.append(e2.getActionCommand()).toString()); y=Double.parseDouble(tf1.getText().trim()); } } else if(e2.getSource()==b0)//选择的是“BackSpace”按钮 { if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零 { if(str.length()!=1) { tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常 } else { tf1.setText("0"); str.setLength(0); } } y=Double.parseDouble(tf1.getText().trim()); } else//其他的数字键 { tf1.setText(str.append(e2.getActionCommand()).toString()); y=Double.parseDouble(tf1.getText().trim()); } } } catch(NumberFormatException e){ tf1.setText("数字格式异常"); } catch(StringIndexOutOfBoundsException e){ tf1.setText("字符串索引越界"); } } } public static void main(String args) { new Counter(); } } 这个是别人写的。。。 回答者: ざぉを - 江湖新秀 四级 4-17 13:51这段代码对你有帮助 import javax.swing.*; import javax.swing.border.Border; import java.awt.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashMap; /** * 我的计算器。MyCalculator 继承于 JFrame,是计算器的界面 */ public class MyCalculator extends JFrame { private Border border = BorderFactory.createEmptyBorder(5, 5, 5, 5); private JTextField textbox = new JTextField("0"); private CalculatorCore core = new CalculatorCore(); private ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent e) { JButton b = (JButton) e.getSource(); String label = b.getText(); String result = core.process(label); textbox.setText(result); } }; public MyCalculator(String title) throws HeadlessException { super(title); // 调用父类构造方法 setupFrame(); // 调整窗体属性 setupControls(); // 创建控件 } private void setupControls() { setupDisplayPanel(); // 创建文本面板 setupButtonsPanel(); // 创建按钮面板 } // 创建按钮面板并添加按钮 private void setupButtonsPanel() { JPanel panel = new JPanel(); panel.setBorder(border); panel.setLayout(new GridLayout(4, 5, 3, 3)); createButtons(panel, new String{ "7", "8", "9", "+", "C", "4", "5", "6", "-", "CE", "1", "2", "3", "*", "", // 空字符串表示这个位置没有按钮 "0", ".", "=", "/", "" }); this.add(panel, BorderLayout.CENTER); } /** * 在指定的面板上创建按钮 * * @param panel 要创建按钮的面板 * @param labels 按钮文字 */ private void createButtons(JPanel panel, String labels) { for (String label : labels) { // 如果 label 为空,则表示创建一个空面板。否则创建一个按钮。 if (label.equals("")) { panel.add(new JPanel()); } else { JButton b = new JButton(label); b.addActionListener(listener); // 为按钮添加侦听器 panel.add(b); } } } // 设置显示面板,用一个文本框来作为计算器的显示部分。 private void setupDisplayPanel() { JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setBorder(border); setupTextbox(); panel.add(textbox, BorderLayout.CENTER); this.add(panel, BorderLayout.NORTH); } // 调整文本框 private void setupTextbox() { textbox.setHorizontalAlignment(JTextField.RIGHT); // 文本右对齐 textbox.setEditable(false); // 文本框只读 textbox.setBackground(Color.white); // 文本框背景色为白色 } // 调整窗体 private void setupFrame() { this.setDefaultCloseOperation(EXIT_ON_CLOSE); // 当窗体关闭时程序结束 this.setLocation(100, 50); // 设置窗体显示在桌面上的位置 this.setSize(300, 200); // 设置窗体大小 this.setResizable(false); // 窗体大小固定 } // 程序入口 public static void main(String args) throws Exception { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); MyCalculator frame = new MyCalculator("我的计算器"); frame.setVisible(true); // 在桌面上显示窗体 } } /** * 计算器核心逻辑。这个逻辑只能处理 1~2 个数的运算。 */ class CalculatorCore { private String displayText = "0"; // 要显示的文本 boolean reset = true; private BigDecimal number1, number2; private String operator; private HashMap《String, Operator》 operators = new HashMap《String, Operator》(); private HashMap《String, Processor》 processors = new HashMap《String, Processor》(); CalculatorCore() { setupOperators(); setupProcessors(); } // 为每种命令添加处理方式 private void setupProcessors() { processors.put("", new Processor() { public void calculate(String command) { numberClicked(command); } }); processors.put("\\.", new Processor() { public void calculate(String command) { dotClicked(); } }); processors.put("=", new Processor() { public void calculate(String command) { equalsClicked(); } }); processors.put("", new Processor() { public void calculate(String command) { operatorClicked(command); } }); processors.put("C", new Processor() { public void calculate(String command) { clearClicked(); } }); processors.put("CE", new Processor() { public void calculate(String command) { clearErrorClicked(); } }); } // 为每种 operator 添加处理方式 private void setupOperators() { operators.put("+", new Operator() { public BigDecimal process(BigDecimal number1, BigDecimal number2) { return number1.add(number2); } }); operators.put("-", new Operator() { public BigDecimal process(BigDecimal number1, BigDecimal number2) { return number1.subtract(number2); } }); operators.put("*", new Operator() { public BigDecimal process(BigDecimal number1, BigDecimal number2) { return number1.multiply(number2); } }); operators.put("/", new Operator() { public BigDecimal process(BigDecimal number1, BigDecimal number2) { return number1.divide(number2, 30, RoundingMode.HALF_UP); } }); } // 根据命令处理。这里的命令实际上就是按钮文本。 public String process(String command) { for (String pattern : processors.keySet()) { if (command.matches(pattern)) { processors.get(pattern).calculate(command); break; } } return displayText; } // 当按下 CE 时 private void clearErrorClicked() { if (operator == null) { number1 = null; } else { number2 = null; } displayText = "0"; reset = true; } // 当按下 C 时,将计算器置为初始状态。 private void clearClicked() { number1 = null; number2 = null; operator = null; displayText = "0"; reset = true; } // 当按下 = 时 private void equalsClicked() { calculateResult(); number1 = null; number2 = null; operator = null; reset = true; } // 计算结果 private void calculateResult() { number2 = new BigDecimal(displayText); Operator oper = operators.get(operator); if (oper != null) { BigDecimal result = oper.process(number1, number2); displayText = result.toString(); } } // 当按下 +-*/ 时(这里也可以扩展成其他中间操作符) private void operatorClicked(String command) { if (operator != null) { calculateResult(); } number1 = new BigDecimal(displayText); operator = command; reset = true; } // 当按下 . 时 private void dotClicked() { if (displayText.indexOf(".") == -1) { displayText += "."; } else if (reset) { displayText = "0."; } reset = false; } // 当按下 0-9 时 private void numberClicked(String command) { if (reset) { displayText = command; } else { displayText += command; } reset = false; } // 运算符处理接口 interface Operator { BigDecimal process(BigDecimal number1, BigDecimal number2); } // 按钮处理接口 interface Processor { void calculate(String command); } }

编写java程序简单计算器

主要涉及的知识点: 类的写法, 以及方法的调用 .建议多做练习. 如果有看不懂的地方. 可以继续追问,一起讨论.

参考代码如下

//Number类class Number {private int n1;//私有的整型数据成员n1private int n2;//私有的整型数据成员n2// 通过构造函数给n1和n2赋值public Number(int n1, int n2) {this.n1 = n1;this.n2 = n2;}// 加法public int addition() {return n1 + n2;}// 减法public int subtration() {return n1 - n2;}// 乘法public int multiplication() {return n1 * n2;}// 除法 (可能除不尽,所以使用double作为返回类型)public double division() {return n1 * 1.0 / n2; // 通过n1*1.0 把计算结果转换成double类型.}}//Exam4 类public class Exam4{public static void main(String args) {Number number=new Number(15, 6);//创建Number类的对象//下面的是调用方法得到返回值进行输出显示System.out.println("加法"+number.addition());System.out.println("减法"+number.subtration());System.out.println("乘法"+number.multiplication());System.out.println("除法"+number.division());}}

关于java课程设计 计算器和用JAVA编写一个简单的计算器,要求如下的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

java课程设计 计算器(用JAVA编写一个简单的计算器,要求如下)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.