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

设计并实现一个简单的计算器(控制台程序,无界面)。要求:1)能够实现基本的加减乘除、括号运算;2)除二元运算外,用户可以在控制台输入包括运算数、运算符、括号的表达式,计算... 设计并实现一个简单的计算器(控制台程序,无界面)。要求:1)能够实现基本的加减乘除、括号运算;2)除二元运算外,用户可以在控制台输入包括运算数、运算符、括号的表达式,计算器可以输出该表达式的运算结果。 展开
 我来答
西西哩的小马甲
2018-04-16 · 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);//设置窗口可见  

  • }  

  • }  

百度网友f198e30
2017-05-12 · 超过18用户采纳过TA的回答
知道答主
回答量:82
采纳率:100%
帮助的人:16.2万
展开全部
太麻烦了 说个思路, 过去字符串后 先获取+-*%的下标.然后然后分割,获取到一个数组或list
然后循环获取() 按照数学运算顺序拼起来,
然后把公式拆分一步一步操作就得出结果啦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最丑男猪脚
2015-01-16 · 超过17用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:19.8万
展开全部
public static void main(String[] args) {
System.out.println("请输入第一个数:");
Scanner scanner1 = new Scanner(System.in);
double input1 = Double.parseDouble(scanner1.nextLine());

System.out.println("请输入符号:");
Scanner scanner3 = new Scanner(System.in);
String method = scanner3.nextLine();

System.out.println("请输入第二个数:");
Scanner scanner2 = new Scanner(System.in);
double input2 = Double.parseDouble(scanner2.nextLine());

double result = 0;
if (method.equals("+")) {
result = input1 + input2;
System.out.println("运行结果为:");
System.out.print(result);
}
if (method.equals("-")) {
result = input1 - input2;
System.out.println("运行结果为:");
System.out.print(result);
}
if (method.equals("*")) {
result = input1 * input2;
System.out.println("运行结果为:");
System.out.print(result);
}
if (method.equals("/")) {
result = input1 / input2;
System.out.println("运行结果为:");
System.out.print(result);
} else {
System.out.println("无此运算符");
}
}

我试过了可以成功 ,比较简单我写的 你可以丰富下功能
追问
都不看要求的?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帅小武说
2015-01-16 · TA获得超过131个赞
知道小有建树答主
回答量:473
采纳率:0%
帮助的人:201万
展开全部
我这里有 怎么发给你
追问
你确定符合要求?秋秋:1450294898
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
50...0@qq.com
2015-01-16
知道答主
回答量:34
采纳率:0%
帮助的人:10.2万
展开全部
很麻烦。分又不多不可能花时间给你写,应该有人写好的 ,让他们传给你把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式