中易网

用java编写计算器,要求如下:

答案:2  悬赏:30  
解决时间 2021-03-14 07:27
1)综合使用网格布局和边框布局

2)“文件”菜单中含一个子菜单“退出”,单击“退出”菜单关闭本计算器。“帮助”菜单中含一个子菜单“关于”,单击“关于”菜单弹出对此计算器的文字描述说明。

3)包括0-9 这十个数字

4)具备加、减、乘、除四个运算符按钮以及等号、清除一个数、全部清空等辅助按钮

5)使用一个文本框显示计算结果
不太难 但就是不会,十分感谢!
最佳答案
正好我们做过,给你发个吧。
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import javax.swing.*;

public class Test6_1{
public static void main(String[] args){
MathWindow math=new MathWindow();//启动程序
}
}
class MathWindow extends JFrame implements ActionListener{
GridLayout grid00=new GridLayout();//文本框的窗口布局,一行一列
GridLayout grid01=new GridLayout(1,3,5,5); //BackSpace、CE、C的窗口布局,一行三列
GridLayout grid1=new GridLayout(2,1,5,5); //二行一列,用于嵌套以上两个窗口布局
GridLayout grid2=new GridLayout(4,5,5,5); //数字和运算符的窗口布局
BorderLayout border=new BorderLayout(5,5); //总窗口布局
JPanel j00=new JPanel();
JPanel j01=new JPanel();
JPanel j1=new JPanel(); //JPanel面板,后缀数字对应上述布局
JPanel j2=new JPanel();
JTextField 文本框=new JTextField("0"); //显示框
JMenuBar 菜单条; //菜单条
JMenu 编辑,帮助; //菜单
JMenuItem 复制,粘贴,帮助主题,关于计算器; //菜单项
JButton 退格=new JButton("BackSpace");
JButton 清零=new JButton("CE");
JButton 清空=new JButton("C");
JButton B00=new JButton("7");
JButton B01=new JButton("8");
JButton B02=new JButton("9");
JButton B03=new JButton("/");
JButton B04=new JButton("sqrt"); //定义窗口中所有的按钮
JButton B10=new JButton("4");
JButton B11=new JButton("5");
JButton B12=new JButton("6");
JButton B13=new JButton("*");
JButton B14=new JButton("%");
JButton B20=new JButton("1");
JButton B21=new JButton("2");
JButton B22=new JButton("3");
JButton B23=new JButton("-");
JButton B24=new JButton("1/x");
JButton B30=new JButton("0");
JButton B31=new JButton("+/-");
JButton B32=new JButton(".");
JButton B33=new JButton("+");
JButton B34=new JButton("=");
float num1=0; //运算数
char ch='#'; //运算符
String copy="0"; //存储
boolean can=false;
MathWindow(){
setTitle("计算器");//设置窗口名称
setVisible(true);//设置可见性
setSize(400,300);//设置窗口初始大小
菜单条=new JMenuBar();
编辑=new JMenu("编辑(E)");
编辑.setMnemonic('E');
帮助=new JMenu("帮助(H)");
帮助.setMnemonic('H');
复制=new JMenuItem("复制(C)");
复制.setMnemonic('C');
复制.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));//设置快捷键
复制.addActionListener(this);//获得监视器
粘贴=new JMenuItem("粘贴(P)");
粘贴.setMnemonic('P');
粘贴.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
粘贴.addActionListener(this);
帮助主题=new JMenuItem("帮助主题(H)");
帮助主题.setMnemonic('H');
帮助主题.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
帮助主题.addActionListener(this);
关于计算器=new JMenuItem("关于计算器(A)");
关于计算器.setMnemonic('A');
关于计算器.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
关于计算器.addActionListener(this);
编辑.add(复制);
编辑.add(粘贴);
帮助.add(帮助主题);
帮助.addSeparator();
帮助.add(关于计算器);
菜单条.add(编辑);
菜单条.add(帮助);
setJMenuBar(菜单条);
setLayout(border);
j00.setLayout(grid00);
j00.add(文本框);
文本框.setEditable(false);
文本框.setHorizontalAlignment(JTextField.RIGHT);
j01.setLayout(grid01);
j01.add(退格);
j01.add(清零);
j01.add(清空);
退格.addActionListener(this);
清零.addActionListener(this);
清空.addActionListener(this);
j1.setLayout(grid1);
j1.add(j00);
j1.add(j01);
add(j1,"North");
j2.setLayout(grid2);
j2.add(B00);
j2.add(B01);
j2.add(B02);
j2.add(B03);
j2.add(B04);
j2.add(B10);
j2.add(B11);
j2.add(B12);
j2.add(B13);
j2.add(B14);
j2.add(B20);
j2.add(B21);
j2.add(B22);
j2.add(B23);
j2.add(B24);
j2.add(B30);
j2.add(B31);
j2.add(B32);
j2.add(B33);
j2.add(B34);
B00.addActionListener(this);
B01.addActionListener(this);
B02.addActionListener(this);
B03.addActionListener(this);
B04.addActionListener(this);
B10.addActionListener(this);
B11.addActionListener(this);
B12.addActionListener(this);
B13.addActionListener(this);
B14.addActionListener(this);
B20.addActionListener(this);
B21.addActionListener(this);
B22.addActionListener(this);
B23.addActionListener(this);
B24.addActionListener(this);
B30.addActionListener(this);
B31.addActionListener(this);
B32.addActionListener(this);
B33.addActionListener(this);
B34.addActionListener(this);
add(j2,"Center");
validate();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
String act=e.getActionCommand();
if(e.getSource()==复制){
copy=文本框.getText();
}
if(e.getSource()==粘贴){
文本框.setText(copy);
}
if(e.getSource()==帮助主题){
JOptionPane.showMessageDialog(null,"请参阅Windows帮助","帮助主题",JOptionPane.INFORMATION_MESSAGE);
}
if(e.getSource()==关于计算器){
JOptionPane.showMessageDialog(null,"名称:简单计算器\n作者:杨明宇\n学号:20101938\n版权所有,仿冒必究","关于计算器",JOptionPane.INFORMATION_MESSAGE);
}
if(e.getSource()==退格){
if(文本框.getText().length()>1){
文本框.setText(文本框.getText().substring(0,文本框.getText().length()-1));
}
else {
文本框.setText("0");
}
return;
}
if(e.getSource()==清零){
文本框.setText("0");
return;
}
if(e.getSource()==清空){
文本框.setText("0");
ch='#';
return;
}
if(act.equals("+/-")){
if(文本框.getText().charAt(0)!='-'){
文本框.setText("-"+文本框.getText());
}
else{
文本框.setText(文本框.getText().substring(1));return;
}
}
if(act.equals(".")){
文本框.setText(文本框.getText()+act);return;
}
if(act!="1/x"&&act.charAt(0)>='0'&&act.charAt(0)<='9'){
if(can){
文本框.setText(act);
can=false;
}
else{
try{
if(Float.parseFloat(文本框.getText())==0){
if(文本框.getText().equals("0.")){
文本框.setText(文本框.getText()+act);
}
else{
文本框.setText(act);
}
return;
}
else{
文本框.setText(文本框.getText()+act);
return;
}
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
}
if(act.equals("+")||act.equals("-")||act.equals("*")||act.equals("/")||act.equals("%")){
if(ch!='#'){
try{
num1=计算(num1,ch,Float.parseFloat(文本框.getText()));
文本框.setText(String.valueOf(num1));
ch=act.charAt(0);
can=true;
return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
else{
try{
num1=Float.parseFloat(文本框.getText());
ch=act.charAt(0);
can=true;
return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
}
if(act.equals("sqrt")){
try{
float num=(float)Math.sqrt(Float.parseFloat(文本框.getText()));
文本框.setText(String.valueOf(num));
can=true;
return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
if(act.equals("1/x")){
try{
float num=1/Float.parseFloat(文本框.getText());
文本框.setText(String.valueOf(num));
can=true;
return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}catch(ArithmeticException e1){
JOptionPane.showMessageDialog(null,"除0错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
if(act.equals("=")){
can=true;
try{
if(ch=='#'){
return;
}
float num=Float.parseFloat(文本框.getText());
num1=计算(num1,ch,num);
文本框.setText(String.valueOf(num1));
ch='#';
return;
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"输入格式错误!","警告!",JOptionPane.ERROR_MESSAGE);
return;
}
}
}
public float 计算(float a,char c,float b){
float sum;
switch(c){
case '+':sum=a+b;break;
case '-':sum=a-b;break;
case '*':sum=a*b;break;
case '/':
if(b==0){
JOptionPane.showMessageDialog(null,"除0错误!","警告!", JOptionPane.ERROR_MESSAGE);
return 0;
}
sum=a/b;
break;
case '%':
if(b==0){
JOptionPane.showMessageDialog(null,"除0错误!","警告!",JOptionPane.ERROR_MESSAGE);
return 0;
}
sum=a%b;
break;
default:return 0;
}
return sum;
}
}
全部回答
最简单的就是 一个输入框 几个运算按钮 一个if程序 搞定
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
寻找穿越之后有孩子的小说,希望孩子的戏份多
qq怎么改回近期密码
协运客货运输有限责任公司在哪里啊,我有事要
西凤有祥瑞天和系列白酒吗?价位咋样?
工程转包怎么赚取差价
车务代办一般收费多少?
路虎神行者2使用沙地模式时水温马上就会好高
win8 安装office2013 遇到错误1317,要怎么解
请帮帮忙,求电影《坠入》 (The Fall)下载
桃花扇的艺术表现手法 - 百度
观下柴火饭店地址在哪,我要去那里办事
顺创包装这个地址在什么地方,我要处理点事
财经法规与会计职业道德中只有财务报告签名并
猫老跟着好还是不好
东莞有没有生产路由器的厂?
推荐资讯
东西南北咋分辨呀???老迷路求解指教
和室友相处不来,不想住宿了,我该怎么办?
机箱只有一个VGA端口,怎样液晶电视和电脑显
基础地梁钢筋在满足锚固长度的条件是否可以直
聚寿里小区地址在哪,我要去那里办事
我下载的最新暴风影音软件怎么没办法安装?
玉香美食怎么去啊,有知道地址的么
C25混凝土灌注桩 查砼含量查市政定额的编号是
是豆浆机做的米糊有营养,还是高压锅煮的有营
在某个页面,是in some page还是on some page
请问福州哪家药店有卖生的何首乌呢????去
我的 名字有个萍 和个梦字 我想加起来起个网
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?