java简单计算器(Java图形界面简单计算器)

:暂无数据 2026-04-01 13:20:02 0
面对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;
}
}

关于java简单计算器,特别是Java图形界面简单计算器的核心要点,你现在是否更清晰了呢?
本文编辑:admin

更多文章:


mural翻译(石墨烯英语有翻译成graphene,壁画翻译成wallpainting,mural但是石墨烯壁画、石墨烯养生壁画怎么翻译)

mural翻译(石墨烯英语有翻译成graphene,壁画翻译成wallpainting,mural但是石墨烯壁画、石墨烯养生壁画怎么翻译)

你是否好奇,为什么人人都在谈mural翻译?它和石墨烯英语有翻译成graphene,壁画翻译成wallpainting,mural但是石墨烯壁画、石墨烯养生壁画怎么翻译之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月1日 14:40

struct stu(struct stu{int a; float b;} stutype什么意思)

struct stu(struct stu{int a; float b;} stutype什么意思)

在了解struct stu的过程中,您是否也曾对struct stu{int a; float b;} stutype什么意思感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年4月1日 14:20

count计算函数(Excel表格如何使用count系列函数计数)

count计算函数(Excel表格如何使用count系列函数计数)

是不是总觉得count计算函数的知识体系太庞大,Excel表格如何使用count系列函数计数更是无从下手?本文将帮你化繁为简,抓住核心。

2026年4月1日 14:00

easyui框架 主题(为什么要使用easyui这些框架,这些框架的优势是什么,有什么好处,主要是用在什么方面)

easyui框架 主题(为什么要使用easyui这些框架,这些框架的优势是什么,有什么好处,主要是用在什么方面)

正如一位名家所言:“弄懂为什么要使用easyui这些框架,这些框架的优势是什么,有什么好处,主要是用在什么方面,是通往easyui框架 主题殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月1日 13:40

java简单计算器(Java图形界面简单计算器)

java简单计算器(Java图形界面简单计算器)

面对java简单计算器这个议题,很多人在Java图形界面简单计算器这里栽了跟头。今天,我们就来聊聊如何避免这个坑,轻松上手。

2026年4月1日 13:20

饿了吗 外卖(怎么在饿了么给外省点外卖)

饿了吗 外卖(怎么在饿了么给外省点外卖)

你是否好奇,为什么人人都在谈饿了吗 外卖?它和怎么在饿了么给外省点外卖之间究竟存在着怎样微妙的联系?答案就在下文。

2026年4月1日 13:00

php文件在线预览(PHP 如何实现像百度文库中 ppt doc pdf 的在线预览,最好有现成的demo)

php文件在线预览(PHP 如何实现像百度文库中 ppt doc pdf 的在线预览,最好有现成的demo)

本文是您理解php文件在线预览的最后一站。我们将通过剖析PHP 如何实现像百度文库中 ppt doc pdf 的在线预览,最好有现成的demo,帮你打通任督二脉,彻底领悟。

2026年4月1日 12:40

stackpanel 滚动条(WPF中combobox显示多列的下拉框)

stackpanel 滚动条(WPF中combobox显示多列的下拉框)

下面,我们将通过stackpanel 滚动条的概述、WPF中combobox显示多列的下拉框的详解以及总结展望三个部分,为您系统梳理这一主题。

2026年4月1日 12:20

画花边边框简单又漂亮(手抄报边框简单又漂亮好画)

画花边边框简单又漂亮(手抄报边框简单又漂亮好画)

嗨,正在屏幕前搜索画花边边框简单又漂亮的你,是否也被手抄报边框简单又漂亮好画的问题困扰过?今天这篇内容就是为你准备的。

2026年4月1日 12:00

吃了舍曲林真实感受(舍曲林是不是对胃不好,每次吃了都感觉胃不舒)

吃了舍曲林真实感受(舍曲林是不是对胃不好,每次吃了都感觉胃不舒)

读懂本文,您将不仅了解吃了舍曲林真实感受是什么,更能洞悉舍曲林是不是对胃不好,每次吃了都感觉胃不舒背后的逻辑,从而举一反三。

2026年4月1日 11:40

最近更新

struct stu(struct stu{int a; float b;} stutype什么意思)
2026-04-01 14:20:01 浏览:0
stackpanel 滚动条(WPF中combobox显示多列的下拉框)
2026-04-01 12:20:01 浏览:0
热门文章

wish是什么意思?翻译I would like toextend our best wishes to you里面的extend 什么意思啊
2026-04-01 04:20:01 浏览:0
电导率aspen缩写(emu怎么读)
2026-03-31 20:20:01 浏览:0
stackpanel 滚动条(WPF中combobox显示多列的下拉框)
2026-04-01 12:20:01 浏览:0
标签列表