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

设计并实现一个简单的计算器(控制台程序,无界面)。要求:1)能够实现基本的加减乘除、括号运算;2)除二元运算外,用户可以在控制台输入包括运算数、运算符、括号的表达式,计算... 设计并实现一个简单的计算器(控制台程序,无界面)。要求:1)能够实现基本的加减乘除、括号运算;2)除二元运算外,用户可以在控制台输入包括运算数、运算符、括号的表达式,计算器可以输出该表达式的运算结果。 展开
 我来答
西西哩的小马甲
推荐于2019-10-24 · TA获得超过10.1万个赞
知道大有可为答主
回答量:39
采纳率:100%
帮助的人:1.8万
展开全部

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

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

  • 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[] = new JButton[16];  

  • 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[i] = new JButton(name[i]);  

  • b[i].setBackground(new Color(192,192,192));  

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

  • if(i%4==3)  

  • b[i].setForeground(Color.RED);  

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

  • panel.add(b[i]);  

  • b[i].addActionListener(this);  

  • }  

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

  • b[13].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[0]);  

  • s.push(m);  

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

  • {  

  • if(i%2==1)    

  • {    

  • if(str[i].compareTo("+")==0)    

  • {    

  • double help = Double.parseDouble(str[i+1]);    

  • s.push(help);    

  • }    

  • if(str[i].compareTo("-")==0)    

  • {    

  • double help = Double.parseDouble(str[i+1]);    

  • s.push(-help);    

  • }    

  • if(str[i].compareTo("*")==0)    

  • {    

  • double help = Double.parseDouble(str[i+1]);    

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

  • s.pop();//消栈    

  • ans*=help;    

  • s.push(ans);    

  • }    

  • if(str[i].compareTo("/")==0)    

  • {    

  • double help = Double.parseDouble(str[i+1]);    

  • 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);//设置窗口可见  

  • }  

  • }  

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式