java简单计算器(Java图形界面简单计算器)
本文目录
Java图形界面简单计算器
示例代码如下,请参考:
package test.com.test;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Cal {
TextField tf = new TextField(40); //显示文本框
StringBuffer s1 = new StringBuffer(); //记录运算数字,以及保留结果
StringBuffer s2 = new StringBuffer(); //记录运算数字,保留上一个输入的数字或运算结果
static String flag = new String(); //标记运算符号:+,-,*,/
boolean start = true; //标记运算开始或结束,保证一次运算之后,第二次进行运算时能同时清空显示界面,即s1为空
public void init(){
//主界面
JFrame f = new JFrame("计算器");
JPanel p1 = new JPanel();
p1.add(tf);
f.add(p1,BorderLayout.NORTH);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(1,3));
//动作**器
ActionListener listen =new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
//输入数字0~9
if(arg0.getActionCommand()=="0"){
if(!s1.toString().equals(new String())){
if(!start){
//s1清零,保证可以重新输入数字
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("0").toString());
}
}
if(arg0.getActionCommand()=="1"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("1").toString());
}
if(arg0.getActionCommand()=="2"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("2").toString());
}
if(arg0.getActionCommand()=="3"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("3").toString());
}
if(arg0.getActionCommand()=="4"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("4").toString());
}
if(arg0.getActionCommand()=="5"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("5").toString());
}
if(arg0.getActionCommand()=="6"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("6").toString());
}
if(arg0.getActionCommand()=="7"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("7").toString());
}
if(arg0.getActionCommand()=="8"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("8").toString());
}
if(arg0.getActionCommand()=="9"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
tf.setText(s1.append("9").toString());
}
//输入小数点
if(arg0.getActionCommand()=="."){
if(!start){
s1.delete(0, s1.length());
}
start=true;
if(s1.toString().equals(new String()))
tf.setText(s1.append("0.").toString());
else if(s1.length()==1&&s1.charAt(0)==’-’)
tf.setText(s1.append("0.").toString());
else
tf.setText(s1.append(".").toString());
}
//输入负号
if(arg0.getActionCommand()=="+/-"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
if(s1.toString().equals(new String()))
tf.setText(s1.append(’-’).toString());
}
//退格Backspace
if(arg0.getActionCommand()=="Backspace"){
start = true;
if(s1.length()!=0){
//删除最后输入的一位
s1.deleteCharAt(s1.length()-1);
tf.setText(s1.toString());
}
}
//归零CE
if(arg0.getActionCommand()=="CE"){
//清空所有,start标记设为true
start = true;
s1.delete(0, s1.length());
s2.delete(0, s2.length());
tf.setText(s1.toString());
}
//清除C
if(arg0.getActionCommand()=="C"){
//清空当前输入,即s1清零
start = true;
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//加号
if(arg0.getActionCommand()=="+"){
start = true;
flag="+";
//s2接收s1的值
s2.append(String.valueOf(s1.toString()));
//s1清零,重新接收下一个数据
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//减号
if(arg0.getActionCommand()=="-"){
start = true;
flag="-";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//乘号
if(arg0.getActionCommand()=="*"){
start = true;
flag="*";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//除号
if(arg0.getActionCommand()=="/"){
start = true;
flag="/";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
tf.setText(s1.toString());
}
//开根号
if(arg0.getActionCommand()=="sqrt"){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(Math.sqrt(s))).toString());
}
//求%
if(arg0.getActionCommand()=="%"){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(s/100)).toString());
}
//求1/x
if(arg0.getActionCommand()=="1/x"&&!s1.toString().equals(new String())&&Double.parseDouble(s1.toString())!=0){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
tf.setText(s1.append(String.valueOf(1/s)).toString());
}
//求结果
if(arg0.getActionCommand()=="="&&s1.length()!=0&&s2.length()!=0){
//start标记为false
start =false;
//分别获取s1和s2的值
double s4=Double.parseDouble(s1.toString());
double s3=Double.parseDouble(s2.toString());
//清空s1和s2,便于开始下一次运算
s1.delete(0, s1.length());
s2.delete(0, s2.length());
//四则运算
if(flag=="+"){
tf.setText(s1.append(String.valueOf(s3+s4)).toString());
}
if(flag=="-"){
tf.setText(s1.append(String.valueOf(s3-s4)).toString());
}
if(flag=="*"){
tf.setText(s1.append(String.valueOf(s3*s4)).toString());
}
if(flag=="/"){
tf.setText(s1.append(String.valueOf(s3/s4)).toString());
}
}
}
};
//添加按钮以及**器
JButton bks = new JButton("Backspace");
bks.addActionListener(listen);
JButton ce = new JButton("CE");
ce.addActionListener(listen);
JButton c = new JButton("C");
c.addActionListener(listen);
p2.add(bks);
p2.add(ce);
p2.add(c);
f.add(p2);
JPanel p3 = new JPanel();
p3.setLayout(new GridLayout(4,5));
JButton b1 = new JButton("7");
p3.add(b1);
b1.addActionListener(listen);
JButton b2 = new JButton("8");
p3.add(b2);
b2.addActionListener(listen);
JButton b3 = new JButton("9");
p3.add(b3);
b3.addActionListener(listen);
JButton b4 = new JButton("/");
p3.add(b4);
b4.addActionListener(listen);
JButton b5 = new JButton("sqrt");
p3.add(b5);
b5.addActionListener(listen);
JButton b6 = new JButton("4");
p3.add(b6);
b6.addActionListener(listen);
JButton b7 = new JButton("5");
p3.add(b7);
b7.addActionListener(listen);
JButton b8 = new JButton("6");
p3.add(b8);
b8.addActionListener(listen);
JButton b9 = new JButton("*");
p3.add(b9);
b9.addActionListener(listen);
JButton b10 = new JButton("%");
p3.add(b10);
b10.addActionListener(listen);
JButton b11 = new JButton("1");
p3.add(b11);
b11.addActionListener(listen);
JButton b12 = new JButton("2");
p3.add(b12);
b12.addActionListener(listen);
JButton b13 = new JButton("3");
p3.add(b13);
b13.addActionListener(listen);
JButton b14 = new JButton("-");
p3.add(b14);
b14.addActionListener(listen);
JButton b15 = new JButton("1/x");
p3.add(b15);
b15.addActionListener(listen);
JButton b16 = new JButton("0");
p3.add(b16);
b16.addActionListener(listen);
JButton b17 = new JButton("+/-");
p3.add(b17);
b17.addActionListener(listen);
JButton b18 = new JButton(".");
p3.add(b18);
b18.addActionListener(listen);
JButton b19 = new JButton("+");
p3.add(b19);
b19.addActionListener(listen);
JButton b20 = new JButton("=");
p3.add(b20);
b20.addActionListener(listen);
f.add(p3,BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setVisible(true);
}
public static void main(String args){
//调用方法,实现计算器
new Cal().init();
}
}
用java编写一个简单计算器
/*
* @(#)JCalculator.java 1.00 06/17/2015
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* A ****** calculator program.
* 《p》I saw this program in a QQ group, and help a friend correct it.《/p》
*
* @author Singyuen Yip
* @version 1.00 12/29/2009
* @see JFrame
* @see ActionListener
*/
public class JCalculator extends JFrame implements ActionListener {
/**
* Serial Version UID
*/
private static final long serialVersionUID = -169068472193786457L;
/**
* This class help close the Window.
* @author Singyuen Yip
*
*/
private class WindowCloser extends WindowAdapter {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
}
int i;
// Strings for Digit & Operator butt***.
private final String str = { "7", "8", "9", "/", "4", "5", "6", "*","1",
"2", "3", "-", ".", "0", "=", "+" };
// Build butt***.
JButton;
// For cancel or reset.
JButton reset = new JButton("CE");
// Build the text field to show the result.
JTextField display = new JTextField("0");
/**
* C***tructor without parameters.
*/
public JCalculator() {
super("Calculator");
// Add a panel.
JPanel panel1 = new JPanel(new GridLayout(4, 4));
// panel1.setLayout(new GridLayout(4,4));
for (i = 0; i 《 str.length; i++) {
butt***);
panel1.add(butt***);
}
JPanel panel2 = new JPanel(new BorderLayout());
// panel2.setLayout(new BorderLayout());
panel2.add("Center", display);
panel2.add("East", reset);
// JPanel panel3 = new Panel();
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North", panel2);
getContentPane().add("Center", panel1);
// Add action listener for each digit & operator button.
for (i = 0; i 《 str.length; i++)
butt***.addActionListener(this);
// Add listener for "reset" button.
reset.addActionListener(this);
// Add listener for "display" button.
display.addActionListener(this);
// The "close" button "X".
addWindowListener(new WindowCloser());
// Initialize the window size.
setSize(800, 800);
// Show the window.
// show(); Using show() while JDK version is below 1.5.
setVisible(true);
// Fit the certain size.
pack();
}
public void actionPerformed(ActionEvent e) {
Object target = e.getSource();
String label = e.getActionCommand();
if (target == reset)
handleReset();
else if ("0123456789.".indexOf(label) 》 0)
handleNumber(label);
else
handleOperator(label);
}
// Is the first digit pressed?
boolean isFirstDigit = true;
/**
* Number handling.
* @param key the key of the button.
*/
public void handleNumber(String key) {
if (isFirstDigit)
display.setText(key);
else if ((key.equals(".")) && (display.getText().indexOf(".") 《 0))
display.setText(display.getText() + ".");
else if (!key.equals("."))
display.setText(display.getText() + key);
isFirstDigit = false;
}
/**
* Reset the calculator.
*/
public void handleReset() {
display.setText("0");
isFirstDigit = true;
operator = "=";
}
double number = 0.0;
String operator = "=";
/**
* Handling the operation.
* @param key pressed operator’s key.
*/
public void handleOperator(String key) {
if (operator.equals("+"))
number += Double.valueOf(display.getText());
else if (operator.equals("-"))
number -= Double.valueOf(display.getText());
else if (operator.equals("*"))
number *= Double.valueOf(display.getText());
else if (operator.equals("/"))
number /= Double.valueOf(display.getText());
else if (operator.equals("="))
number = Double.valueOf(display.getText());
display.setText(String.valueOf(number));
operator = key;
isFirstDigit = true;
}
public static void main(String args) {
new JCalculator();
}
}
运行界面:
求java简单计算器源代码
package one;import java.awt.Button;
import java.awt.Component;
import java.awt.Container;
import java.awt.Frame;
import java.awt.GridBagC***traints;
import java.awt.GridBagLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;public class ComFrame extends Frame {
/**
*
*/
private static final long serialVersionUID = 4815962372262243709L;
String valued="",op="",str="789/456*123-0.=+";
boolean clicknum=true,start=true;
int s=0;
double arg=0;
Button btn=null;
TextField txtInput=new TextField(12);
GridBagLayout gbl=new GridBagLayout();
GridBagC***traints gbc=new GridBagC***traints();
Panel pan=new Panel();
private Component addButton(String name, Container con){
btn=new Button();
btn.addActionListener(new MyFrameListener());
btn.setLabel(name);
con.add(btn);
return btn;
}
private void setGbc(GridBagC***traints gbc,int x,int y,int width,int height,GridBagLayout gbl, Component con){
gbc.gridx=x;
gbc.gridy=y;
gbc.gridwidth=width;
gbc.gridheight=height;
gbl.setC***traints(con, gbc);
}
public ComFrame(){
this.setTitle("计算机窗体");
pan.setLayout(gbl);
txtInput.setBounds(15, 45, 270, 25);
pan.setBounds(15, 80, 270, 150);
this.setLayout(null);
gbc.fill=GridBagC***traints.BOTH;
gbc.weightx=1.0;
gbc.weighty=1.0;
this.add(txtInput);
this.add(pan);
for(int i=0;i《4;i++){
for(int j=0;j《4;j++){
this.setGbc(gbc, j, i, 1, 1, gbl, this.addButton(str.substring(s, ++s), pan));
}
}
this.setGbc(gbc, 0, 4, 2, 1, gbl, this.addButton("清空", pan));
this.setGbc(gbc, 2, 4, 2, 1, gbl, this.addButton("退出", pan));
this.setSize(300, 250);
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String args) {
new ComFrame();
}
class MyFrameListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("清空")){
}
else if(e.getActionCommand().equals("退出")){
System.exit(0);
}else{
Input(e.getActionCommand());
}
}
private void Input(String value){
if(value.equals("+")){
if(arg!=0.0&&clicknum==true&&!op.equals("="))
operation(Double.valueOf(valued));
clicknum=false;
op="+";
}
else if(value.equals("-")){
if(arg!=0.0&&clicknum==true&&!op.equals("="))
operation(Double.valueOf(valued));
clicknum=false;
op="-";
}
else if(value.equals("*")){
if(arg!=0.0&&clicknum==true&&!op.equals("="))
operation(Double.valueOf(valued));
clicknum=false;
op="*";
}
else if(value.equals("/")){
if(arg!=0.0&&clicknum==true&&!op.equals("="))
operation(Double.valueOf(valued));
clicknum=false;
op="/";
}
else if(value.equals("=")){
if(clicknum==true&&!op.equals("=")){
operation(Double.valueOf(valued));
}
clicknum=false;
op="=";
start=false;
}
else {
if(op.equals("=")){
arg=0.0;
valued=value;
}
if(!op.equals("")&&clicknum==false){
if(arg==0.0&&start==true){
arg=Double.valueOf(valued);
}
valued="";
clicknum=true;
start=true;
}
if(value=="."&&valued.contains(".")){
}
else if(value=="."&&valued==""){
valued="0.";
}
else{
valued=valued+value;
}
txtInput.setText(valued);
}
}
private void operation(Double n){
if(op.equals("+"))arg+=n;
if(op.equals("-"))arg-=n;
if(op.equals("*"))arg*=n;
if(op.equals("/"))arg/=n;
txtInput.setText(""+arg);
}
}
}窗体设计应该还可以吧
用java编写计算器,要求如下:
正好我们做过,给你发个吧。
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;
}
}
用Java编一个简单的计算器 (只含加减乘除和0~9十四个键),请问各位大神怎么编辑
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.util.LinkedList; //工具包
import java.text.NumberFormat; //文本包
/**
* java swing计算器
* @author young
*
*/
public class Calculator extends Frame implements ActionListener // 计算器类
{
JTextField result;
NumberButton numberButton;
OperatorButton operatorButton;
Button radixpoint, positiveminus, backspace, reciprocal, equal, clear; // 声明成员变量
// 小数点按钮,正负号按钮,退格按钮,求倒数按钮,等号按钮,清零按钮
Panel panel;
String operator = { "+", "-", "*", "/" };
LinkedList linklist;
boolean pressequal = false;
public Calculator() // 构造方法
{
super("计算器");
linklist = new LinkedList();
numberButton = new NumberButton;
for (int i = 0; i 《= 9; i++) {
numberButton = new NumberButton(i);
numberButton.addActionListener(this);
}
operatorButton = new OperatorButton;
for (int i = 0; i 《 4; i++) {
operatorButton);
operatorButton.addActionListener(this);
}
radixpoint = new Button(".");
positiveminus = new Button("+/-");
backspace = new Button("CE");
reciprocal = new Button("1/x");
equal = new Button("=");
clear = new Button("C");
radixpoint.setForeground(Color.red);
positiveminus.setForeground(Color.red);
backspace.setForeground(Color.red);
reciprocal.setForeground(Color.red);
equal.setForeground(Color.red);
clear.setForeground(Color.red);
radixpoint.addActionListener(this);
positiveminus.addActionListener(this);
backspace.addActionListener(this);
reciprocal.addActionListener(this);
equal.addActionListener(this);
clear.addActionListener(this);
result = new JTextField(10);
result.setHorizontalAlignment(JTextField.RIGHT);
result.setForeground(Color.black);
result.setBackground(Color.white);
result.setFont(new Font("TimesRoman", Font.PLAIN, 14));
result.setBorder(new SoftBevelBorder(BevelBorder.LOWERED));
result.setEditable(false);
panel = new Panel();
panel.setLayout(new GridLayout(4, 5));
panel.add(numberButton);
panel.add(numberButton);
panel.add(numberButton);
panel.add(backspace);
panel.add(clear);
panel.add(numberButton);
panel.add(numberButton);
panel.add(numberButton);
panel.add(operatorButton);
panel.add(operatorButton);
panel.add(numberButton);
panel.add(numberButton);
panel.add(numberButton);
panel.add(operatorButton);
panel.add(operatorButton);
panel.add(numberButton);
panel.add(positiveminus);
panel.add(reciprocal);
panel.add(radixpoint);
panel.add(equal);
add(result, "North");
add(panel, "Center");
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setSize(270, 200);
setLocation(300, 230);
setVisible(true);
}
public void actionPerformed(ActionEvent e) // 按钮的单击事件处理方法
{
if (e.getSource() instanceof NumberButton) // 数字按钮
{
NumberButton b = (NumberButton) e.getSource();
if (linklist.size() == 0) {
int number = b.getNumber();
linklist.add("" + number);
result.setText("" + number);
pressequal = false;
}
else if (linklist.size() == 1 && pressequal == false) {
int number = b.getNumber();
String num = (String) linklist.getFirst();
String s = num.concat("" + number);
linklist.set(0, s);
result.setText(s);
} else if (linklist.size() == 1 && pressequal == true) {
int number = b.getNumber();
linklist.removeFirst();
linklist.add("" + number);
pressequal = false;
result.setText("" + number);
} else if (linklist.size() == 2) {
int number = b.getNumber();
linklist.add("" + number);
result.setText("" + number);
} else if (linklist.size() == 3) {
int number = b.getNumber();
String num = (String) linklist.getLast();
String s = num.concat("" + number);
linklist.set(2, s);
result.setText(s);
}
} else if (e.getSource() instanceof OperatorButton) // 操作按钮
{
OperatorButton b = (OperatorButton) e.getSource();
if (linklist.size() == 1) {
String fuhao = b.getOperator();
linklist.add(fuhao);
} else if (linklist.size() == 2) {
String fuhao = b.getOperator();
linklist.set(1, fuhao);
} else if (linklist.size() == 3) {
String fuhao = b.getOperator();
String number1 = (String) linklist.getFirst();
String number2 = (String) linklist.getLast();
String operator = (String) linklist.get(1);
try {
double n1 = Double.parseDouble(number1);
double n2 = Double.parseDouble(number2);
double n = 0;
if (operator.equals("+")) {
n = n1 + n2;
} else if (operator.equals("-")) {
n = n1 - n2;
} else if (operator.equals("*")) {
n = n1 * n2;
} else if (operator.equals("/")) {
n = n1 / n2;
}
linklist.clear();
linklist.add("" + n);
linklist.add(fuhao);
result.setText("" + n);
} catch (Exception ee) {
}
}
} else if (e.getSource() == equal) // 等号按钮
{
pressequal = true;
if (linklist.size() == 1 || linklist.size() == 2) {
String num = (String) linklist.getFirst();
result.setText("" + num);
} else if (linklist.size() == 3) {
String number1 = (String) linklist.getFirst();
String number2 = (String) linklist.getLast();
String operator = (String) linklist.get(1);
try {
double n1 = Double.parseDouble(number1);
double n2 = Double.parseDouble(number2);
double n = 0;
if (operator.equals("+")) {
n = n1 + n2;
} else if (operator.equals("-")) {
n = n1 - n2;
} else if (operator.equals("*")) {
n = n1 * n2;
} else if (operator.equals("/")) {
n = n1 / n2;
}
result.setText("" + n);
linklist.set(0, "" + n);
linklist.removeLast();
linklist.removeLast();
} catch (Exception ee) {
}
}
} else if (e.getSource() == radixpoint) // 小数点按钮
{
if (linklist.size() == 0) {
pressequal = false;
} else if (linklist.size() == 1) {
String dot = radixpoint.getLabel();
String num = (String) linklist.getFirst();
String s = null;
if (num.indexOf(dot) == -1) {
s = num.concat(dot);
linklist.set(0, s);
} else {
s = num;
}
linklist.set(0, s);
result.setText(s);
}
else if (linklist.size() == 3) {
String dot = radixpoint.getLabel();
String num = (String) linklist.getLast();
String s = null;
if (num.indexOf(dot) == -1) {
s = num.concat(dot);
linklist.set(2, s);
} else {
s = num;
}
result.setText(s);
}
} else if (e.getSource() == backspace) // 退格按钮
{
if (linklist.size() == 1) {
String num = (String) linklist.getFirst();
if (num.length() 》= 1) {
num = num.substring(0, num.length() - 1);
linklist.set(0, num);
result.setText(num);
} else {
linklist.removeLast();
result.setText("0");
}
} else if (linklist.size() == 3) {
String num = (String) linklist.getLast();
if (num.length() 》= 1) {
num = num.substring(0, num.length() - 1);
linklist.set(2, num);
result.setText(num);
} else {
linklist.removeLast();
result.setText("0");
}
}
} else if (e.getSource() == positiveminus) // 正负号按钮
{
if (linklist.size() == 1) {
String number1 = (String) linklist.getFirst();
try {
double d = Double.parseDouble(number1);
d = -1 * d;
String str = String.valueOf(d);
linklist.set(0, str);
result.setText(str);
} catch (Exception ee) {
}
} else if (linklist.size() == 3) {
String number2 = (String) linklist.getLast();
try {
double d = Double.parseDouble(number2);
d = -1 * d;
String str = String.valueOf(d);
linklist.set(2, str);
result.setText(str);
} catch (Exception ee) {
}
}
} else if (e.getSource() == reciprocal) // 求倒数按钮
{
if (linklist.size() == 1 || linklist.size() == 2) {
String number1 = (String) linklist.getFirst();
try {
double d = Double.parseDouble(number1);
d = 1.0 / d;
String str = String.valueOf(d);
linklist.set(0, str);
result.setText(str);
} catch (Exception ee) {
}
} else if (linklist.size() == 3) {
String number2 = (String) linklist.getLast();
try {
double d = Double.parseDouble(number2);
d = 1.0 / d;
String str = String.valueOf(d);
linklist.set(0, str);
result.setText(str);
} catch (Exception ee) {
}
}
} else if (e.getSource() == clear) // 清零按钮
{
pressequal = false;
result.setText("0");
linklist.clear();
}
}
public static void main(String args) {
new Calculator();
}
}
class NumberButton extends Button // 数字按钮类
{
int number;
public NumberButton(int number) // 构造方法
{
super("" + number);
this.number = number;
setForeground(Color.blue);
}
public int getNumber() {
return number;
}
}
class OperatorButton extends Button // 运算符号按钮类
{
String operator;
public OperatorButton(String operator) // 构造方法
{
super(operator);
this.operator = operator;
setForeground(Color.red);
}
public String getOperator() {
return operator;
}
}
更多文章:
struct stu(struct stu{int a; float b;} stutype什么意思)
2026年4月1日 14:20
count计算函数(Excel表格如何使用count系列函数计数)
2026年4月1日 14:00
easyui框架 主题(为什么要使用easyui这些框架,这些框架的优势是什么,有什么好处,主要是用在什么方面)
2026年4月1日 13:40
php文件在线预览(PHP 如何实现像百度文库中 ppt doc pdf 的在线预览,最好有现成的demo)
2026年4月1日 12:40
stackpanel 滚动条(WPF中combobox显示多列的下拉框)
2026年4月1日 12:20
吃了舍曲林真实感受(舍曲林是不是对胃不好,每次吃了都感觉胃不舒)
2026年4月1日 11:40




