java计算器用什么布局_求JAVA语言写的计算器的代码。用GridLayout布局。
展开全部
package com.citi.Util;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
/**
* @author yc80549
*
*/
public class Calculator extends JFrame implements ActionListener {
/**
*
*
*/
private static final long serialVersionUID = 1L;
private JTextField expression = new JTextField();
private JPanel buttonContainer = new JPanel();
private JPanel operators = new JPanel();
private JButton b1 = new JButton("1");
private JButton b2 = new JButton("2");
private JButton b3 = new JButton("3");
private JButton b4 = new JButton("4");
private JButton b5 = new JButton("5");
private JButton b6 = new JButton("6");
private JButton b7 = new JButton("7");
private JButton b8 = new JButton("8");
private JButton b9 = new JButton("9");
private JButton b0 = new JButton("0");
private JButton bpoint = new JButton(".");
private JButton bracket1 = new JButton("(");
private JButton bracket2 = new JButton(")");
private JButton plus = new JButton("+");
private JButton minus = new JButton("-");
private JButton multiply = new JButton("*");
private JButton divide = new JButton("/");
private JButton getResult = new JButton("=");
private JButton backSpace = new JButton("Backspace");
private JButton clear = new JButton("C");
private JButton OFF = new JButton("OFF");
private StringCalculate2 cacu = new StringCalculate2();
public Calculator() {
super();
setVisible(true);
this.setLayout(new BorderLayout());
this.setSize(400, 220);
Toolkit tk = Toolkit.getDefaultToolkit();
int width = (int) tk.getScreenSize().getWidth();
int height = (int) tk.getScreenSize().getHeight();
this.setLocation((int) ((width - getSize().getWidth()) / 2),
(int) ((height - getSize().getHeight()) / 2));
this.locate();
this.addAllListener();
}
public void locate() {
buttonContainer.setLayout(new GridLayout(4, 4));
buttonContainer.add(b1);
buttonContainer.add(b2);
buttonContainer.add(b3);
buttonContainer.add(plus);
buttonContainer.add(b4);
buttonContainer.add(b5);
buttonContainer.add(b6);
buttonContainer.add(minus);
buttonContainer.add(b7);
buttonContainer.add(b8);
buttonContainer.add(b9);
buttonContainer.add(multiply);
buttonContainer.add(b0);
buttonContainer.add(bpoint);
buttonContainer.add(getResult);
buttonContainer.add(divide);
operators.add(bracket1);
operators.add(bracket2);
operators.add(backSpace);
operators.add(clear);
operators.add(OFF);
this.add(expression, BorderLayout.NORTH);
this.add(buttonContainer, BorderLayout.CENTER);
this.add(operators, BorderLayout.SOUTH);
}
public void addAllListener() {
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b0.addActionListener(this);
plus.addActionListener(this);
multiply.addActionListener(this);
divide.addActionListener(this);
minus.addActionListener(this);
bpoint.addActionListener(this);
bracket1.addActionListener(this);
bracket2.addActionListener(this);
getResult.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
double result = cacu.parse(expression.getText());
expression.setText("" + result);
} catch (Exception e1) {
System.err
.println("invaild expression or RuntimeException");
}
}
});
clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
expression.setText("");
}
});
OFF.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(1);
}
});
backSpace.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
expression.setText(expression.getText().substring(0,
expression.getText().length() - 1));
}
});
}
public void actionPerformed(ActionEvent e) {
JButton source = (JButton) e.getSource();
expression.setText(expression.getText() + source.getText());
}
public static void main(String[] args) {
Calculator cal = new Calculator();
cal.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package com.citi.Util;
import java.util.Stack;
import javax.swing.JOptionPane;
public class StringCalculate2 {
private Stack numbers = new Stack();
private Stack chs = new Stack();
private boolean compare(char str) {
32313133353236313431303231363533e59b9ee7ad9431333335313831if (chs.empty()) {
return true;
}
char last = (char) chs.lastElement();
switch (str) {
case '*': {
if (last == '+' || last == '-')
return true;
else
return false;
}
case '/': {
if (last == '+' || last == '-')
return true;
else
return false;
}
case '+':
return false;
case '-':
return false;
}
return true;
}
public Double caculate(String str) {
StringBuffer sb = new StringBuffer(str);
StringBuffer num = new StringBuffer();
String tem = null;
char next;
while (sb.length() > 0) {
tem = sb.substring(0, 1);
sb.delete(0, 1);
if (isNum(tem.trim())) {
num.append(tem);
} else {
if (num.length() > 0 && !"".equals(num.toString().trim())) {
Double d = new Double(num.toString().trim());
numbers.push(d);
num.delete(0, num.length());
}
if (!chs.isEmpty()) {
while (!compare(tem.charAt(0))) {
caculate();
}
}
if (numbers.isEmpty()) {
num.append(tem);
} else {
chs.push(new Character(tem.charAt(0)));
}
next = sb.charAt(0);
if (next == '-') {
num.append(next);
sb.delete(0, 1);
}
}
}
Double d = new Double(num.toString().trim());
numbers.push(d);
while (!chs.isEmpty()) {
caculate();
}
return numbers.pop();
}
public void caculate() {
Double b = numbers.pop();
Double a = null;
a = numbers.pop();
char ope = chs.pop();
Double result = null;
switch (ope) {
case '+':
result = a + b;
numbers.push(result);
break;
case '-':
result = a - b;
numbers.push(result);
break;
case '*':
result = a * b;
numbers.push(result);
break;
case '/':
result = a / b;
numbers.push(result);
break;
}
}
private boolean isNum(String num) {
return num.matches("[0-9.]");
}
public Double parse(String str) {
int start = 0;
StringBuffer sts = new StringBuffer(str);
int end = -1;
while ((end = sts.indexOf(")")) > 0) {
String s = sts.substring(start, end + 1);
int first = s.lastIndexOf("(");
Double value = caculate(sts.substring(first + 1, end));
sts.replace(first, end + 1, value.toString());
}
return caculate(sts.toString());
}
public static void main(String[] args) {
String exp = JOptionPane
.showInputDialog("please input expression you want to caculate!");
if (exp.trim().equals("")) {
System.out.println("you have input nothing");
return;
}
StringCalculate2 sc = new StringCalculate2();
JOptionPane.showMessageDialog(null, "the result is: " + sc.parse(exp));
}
}
本回答由网友推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
java计算器用什么布局_求JAVA语言写的计算器的代码。用GridLayout布局。相关推荐
- java大神请出来_求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因。...
求java大神,请分析以下代码,写出执行结果,并解释每行结果输出的原因.classPlate{publicPlate(){System.out.println("inPlateconstru ...
- java关键字有system吗_求java中的关键字?
展开全部 访问控制: private 私有的62616964757a686964616fe58685e5aeb931333264626632 protected 受保护的 public 公共的 类.方 ...
- java开发汉字显示不全_求java转码ISO-8859-1转UTF-8汉字显示不全补救方案?
给你写个过滤器.你试试. public class ChStr { public static String toChinese(String strvalue) { try { if (strval ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- 用C语言写一个计算器
用C语言写一个计算器,除了四则混合运算之外,还支持三角函数和绝对值等函数. PS E:\Code\PL\calc> .\a.exe abs(3*5-4^2) abs(3*5-4^2)=1.000 ...
- java计算器如何实现运算_用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢...
用java编写了一个模拟计算器的界面设计,怎么实现运算功能呢 2020 - 9 - 16 TAG : view sourceprint?import java.awt.BorderLayout; im ...
- Java代码生成同一色系颜色_求大侠帮忙给这段JAVA代码 设置个背景颜色!
换个颜色就成!importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.sql.*;publicclassInque ...
- 用java编写圆锥_求java大神帮忙 求大神帮助!Java
导航:网站首页 > 求java大神帮忙 求大神帮助!Java 求java大神帮忙 求大神帮助!Java 相关问题: 匿名网友: 普通类 public class CircularA { //求圆 ...
- java微信签名什么意思,java,_求java实现微信签名,java - phpStudy
求java实现微信签名 1.求java怎么实现微信签名 package sign; import java.security.MessageDigest; public class MD5Util { ...
最新文章
- android app无感知自动升级,Android中实现用户无感知处理后台崩溃
- 正则表达式从入门到实战
- Chrome 控制台指南
- 信号之函数的可重入性
- High Availability--keepalived详解篇(三)之keepalive配置实例-http
- php 系统找不到指定的路径.,PHP网站(windows2003服务器 IIS6)提示:系统找不到指定的路径。...
- linux发布成服务,linux服务简单部署
- 学软件测试必看的10本书推荐给你
- oc引导win方法_适配自己的OC引导一键生成Opencore Generation X使用指南
- Latex表格/公式在线编译转换器
- 常见时序算法集合【资源整理】
- python实现logistic增长模型拟合2019-nCov确诊人数2月1日更新
- 区块链授权的5G异构网络安全频谱共享
- python密码游戏
- java 基础面试练习题(易错题)
- github fatal: Authentication failed for解决方法
- Dataguru(炼数成金)培训优惠码分享
- opensll zbar交叉编译(君正平台)
- TC+Iptables+htb
- php域名录入系统课设报告,用PHP编程开发“虚拟域名”系统