永发信息网

用java语言,编写一个计算器

答案:6  悬赏:50  手机版
解决时间 2021-03-15 14:43
用java语言,编写一个计算器
最佳答案
有一个现成的.你看看吧

import java.awt.event.ActionEvent;

public class Application extends JFrame {

protected String str = "";
protected boolean isChar = true;
protected boolean isEqual = false;
protected JTextField textField;

public Application() {
Listener listerner = new Listener(this);
getContentPane().setLayout(null);

JButton button = new JButton("7");
button.addActionListener(listerner);
button.setBounds(12, 69, 43, 27);
getContentPane().add(button);

textField = new JTextField();
textField.setText("0");
textField.setEditable(false);
textField.setHorizontalAlignment(JTextField.RIGHT);
textField.setBounds(12, 22, 377, 27);
getContentPane().add(textField);
textField.setColumns(10);

JButton button_1 = new JButton("8");
button_1.addActionListener(listerner);
button_1.setBounds(103, 69, 43, 27);
getContentPane().add(button_1);

JButton button_2 = new JButton("9");
button_2.addActionListener(listerner);
button_2.setBounds(182, 69, 43, 27);
getContentPane().add(button_2);

JButton button_3 = new JButton("4");
button_3.addActionListener(listerner);
button_3.setBounds(12, 106, 43, 27);
getContentPane().add(button_3);

JButton button_4 = new JButton("5");
button_4.addActionListener(listerner);
button_4.setBounds(103, 106, 43, 27);
getContentPane().add(button_4);

JButton button_5 = new JButton("6");
button_5.addActionListener(listerner);
button_5.setBounds(182, 106, 43, 27);
getContentPane().add(button_5);

JButton button_6 = new JButton("1");
button_6.addActionListener(listerner);
button_6.setBounds(12, 143, 43, 27);
getContentPane().add(button_6);

JButton button_7 = new JButton("2");
button_7.addActionListener(listerner);
button_7.setBounds(103, 143, 43, 27);
getContentPane().add(button_7);

JButton button_8 = new JButton("3");
button_8.addActionListener(listerner);
button_8.setBounds(182, 143, 43, 27);
getContentPane().add(button_8);

JButton button_9 = new JButton("+");
button_9.addActionListener(listerner);
button_9.setBounds(269, 72, 43, 27);
getContentPane().add(button_9);

JButton button_10 = new JButton("-");
button_10.addActionListener(listerner);
button_10.setBounds(346, 72, 43, 27);
getContentPane().add(button_10);

JButton button_11 = new JButton("*");
button_11.addActionListener(listerner);
button_11.setBounds(269, 109, 43, 27);
getContentPane().add(button_11);

JButton button_12 = new JButton("/");
button_12.addActionListener(listerner);
button_12.setBounds(346, 109, 43, 27);
getContentPane().add(button_12);

JButton button_13 = new JButton("=");
button_13.addActionListener(listerner);
button_13.setBounds(346, 143, 43, 27);
getContentPane().add(button_13);

JButton button_14 = new JButton("0");
button_14.addActionListener(listerner);
button_14.setBounds(103, 180, 43, 27);
getContentPane().add(button_14);

JButton btnReset = new JButton("reset");
btnReset.addActionListener(listerner);
btnReset.setBounds(269, 180, 118, 27);
getContentPane().add(btnReset);

JButton button_15 = new JButton(".");
button_15.addActionListener(listerner);
button_15.setBounds(269, 146, 43, 27);
getContentPane().add(button_15);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setSize(442, 260);
this.setLocationRelativeTo(null);
this.setVisible(true);
}

public static void main(String[] args) {
new Application();
}
}

class Listener implements ActionListener {
private Application app = null;

public Listener(Application app) {
this.app = app;
}

public void actionPerformed(ActionEvent e) {
String value = e.getActionCommand();
if (value.matches("[0-9.]")) {
if (app.isChar) {
app.textField.setText("");
app.isChar = false;
}
if (app.isEqual && app.str.matches("[0-9.]*")) {
app.str = "";
app.isEqual = false;
}
app.str += value;
app.textField.setText(app.textField.getText() + value);
} else if (value.matches("[\\+\\-\\*/]")) {
if (!app.str.substring(app.str.length() - 1)
.matches("[\\+\\-\\*/]")) {
app.str += value;
app.isChar = true;
}

} else if ("=".equals(value)) {
app.isEqual = true;
if (app.str.substring(app.str.length() - 1).matches("[\\+\\-]")) {
app.str += "0";
} else if (app.str.substring(app.str.length() - 1)
.matches("[\\*/]")) {
app.str += "1";
}
Interpreter bsh = new Interpreter();
String obj = null;
try {
obj = bsh.eval(app.str).toString();
} catch (Exception exception) {
System.out.println(exception.getMessage());
}

System.out.println(app.str);
app.textField.setText(obj);
app.str = obj;
app.isChar = true;
} else {
app.str = "";
app.textField.setText("0");
}
}
}
全部回答
sgdfg
网上很多现成代码,稍微搜索一下就有了,无需提问。
给邮箱才能发啊 已经发送了~请查收
和你大概说一下思路吧!这样的代码百度一下很多的! 先创建一个Container这个的对象!这个就相当于是一个容器,然后使用布局管理器推荐使用网格布局!计算器么上面肯定要有文本框显示的!new一个JtestField的对象放入容器中,然后就用事件监听,监听窗体上面的每一个按键!
package Calculater; import javax.swing.JButton; import javax.swing.BorderFactory; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.JFrame; public class MyCalculater extends JFrame { JTextField text; public MyCalculater(){ text=new JTextField(10); text.setEditable(false); text.setBorder(BorderFactory.createLineBorder(Color.red,2)); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel numPa=new JPanel(); JPanel opePa=new JPanel(); Container c=getContentPane(); numPa.setLayout(new GridLayout(4,3,2,2)); opePa.setLayout(new GridLayout(4,1,2,2)); JButton numButt[]=new JButton[12]; JButton opeButt[]=new JButton[8]; for(int i=0;i<10;i++){ numButt[i]=new JButton(new Integer(i).toString()); } numButt[10]=new JButton("."); numButt[11]=new JButton("CE"); opeButt[0]=new JButton("+"); opeButt[1]=new JButton("-"); opeButt[2]=new JButton("x"); opeButt[3]=new JButton("/"); opeButt[4]=new JButton("sqr"); opeButt[5]=new JButton("pow"); opeButt[6]=new JButton("+/-"); opeButt[7]=new JButton("="); for(int i=0;i<12;i++){ numPa.add(numButt[i]); } ButtonListener bu=new ButtonListener(); for(int i=0;i<12;i++){ numButt[i].addActionListener(bu); } for(int i=0;i<8;i++){ opePa.add(opeButt[i]); } for(int i=0;i<8;i++){ opeButt[i].addActionListener(bu); } c.add(text,BorderLayout.NORTH); c.add(numPa,BorderLayout.WEST); c.add(opePa,BorderLayout.EAST); pack(); setResizable(false); setVisible(true); } public static void main(String[] args) { new MyCalculater(); } class ButtonListener implements ActionListener{ private String s2=""; private boolean deter=false; private double total=0.0; private String totalStirng=""; int flag=0; public void actionPerformed(ActionEvent e) { String s1=text.getText(); String s=e.getActionCommand(); if(s.equals(".")){ text.setText(s1+s); } else if(s.equals("+/-")){ text.setText("-"+s1); } else if(Character.isDigit(s.charAt(0))){ if(flag==1){ text.setText(s); flag--; }else{ text.setText(s1+s); } } else if(s.equals("CE")){ text.setText("0"); total=0.0; totalStirng=""; s1="0"; s2=""; s=""; flag=0; deter=false; } else { if(!deter){ deter=true; totalStirng=text.getText(); flag++; s2=s; } else { double s0=Double.parseDouble(totalStirng); double s10=Double.parseDouble(s1); if(s2.equals("+")){ total=s0+s10; } else if(s2.equals("-")){ total=s0-s10; } else if(s2.equals("x")){ total=s0*s10; } else if(s2.equals("/")){ total=s0/s10; } else if(s2.equals("pow")){ total=Math.pow(s0, s10); } else if(s2.equals("sqr")){ total=Math.sqrt(s10); } totalStirng=Double.toString(total); text.setText(totalStirng); s2=s; if(flag==0){ flag++; } } } } } }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
黄瓜芹菜杏仁在一起能拌咸菜,吗
鲁智深的相关事迹及从中体现的性格特征和形象
从桐乡站出来后乘K282到乌镇汽车站要多久
宜昌长江综合批发市场管理委员会在什么地方啊
有白沟到定州的高铁吗
为什么出汗后会感觉皮肤比较白呢
我要张一山的QQ
打安基酸后出了汗还有用吗
单选题下列各组离子,一定能在指定环境中大量
电脑开机时到欢迎使用界面时就会蓝屏,自动重
老冯沟地址有知道的么?有点事想过去
脸上有豆豆,小颗的、而且顶着黑头。这是油脂
听说欧惠化妆品能祛痘印,真的假的?效果好吗
什么职业比较亲民好玩
玩飞行棋有什么技巧?
推荐资讯
肝脏弹性327 db正常吗?
小泰迪犬身上痒,不停抓,如何简单处理
35岁的女人吃木瓜葛根粉能丰胸吗?要多少钱
我四十多岁了,年前突然想考驾照,第一关轻松
贴吧没有发出的帖子会保存在哪里?怎么删除?
4个月泰迪拉稀,黄色的 伴有白色泡沫 有腥臭
完美国际哪里有80多级飞怪啊?蝴蝶80的,在往
家装中甲醛是从哪里来的?求解
三好学生好还是优秀少先队员好?
华为g730coo自带的系统更新怎么弄
好想离开。。。去一个安安静静的地方。没有情
如何评价美剧《西部世界》第一季第一集
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?