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()==1s1.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()!=0s2.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简单的计算器

java 实现一个简单的计算器,能做100以内的加减乘除

网上找的,如果你枯茄是要求的这样的,自己写也要好一会:

import java.awt.*;

import java.awt.event.*;

public class Calculator {

private Frame f;

private TextField tf = new TextField(30);

private long result;

private boolean append = false;

private Button[] btn = new Button[15];

private char operator = ‘=’;

public static void main(String[] args) {

new Calculator().go();

}

public Calculator() {

initComponent();

}

private void initComponent() {

f = new Frame(“Java Calculator”);

f.setLayout(new BorderLayout()); // The frame uses BorderLayout

f.addWindowListener(new WindowAdapter() {

public void windowClosing(WindowEvent evt) {

System.exit(0);

}

});

Panel centerPanel = new Panel();

centerPanel.setLayout(new GridLayout(5, 3)); // The panel uses GridLayout

NumberListener nl = new NumberListener();

OperatorListener ol = new OperatorListener();

btn[10] = new Button(“+”);

btn[11] = new Button(“-“);

btn[12] = new Button(“*”);

btn[13] = new Button(“/”);

btn[14] = new Button(“=”);

for (int i = 0; i = 9; i++) {

btn[i] = new Button(String.valueOf(i));

centerPanel.add(btn[i]);

btn[i].addActionListener(nl);

if (i % 2 == 1) {

centerPanel.add(btn[(i + 19) / 2]);

btn[(i + 19) / 2].addActionListener(ol);

}

}

f.add(centerPanel, BorderLayout.CENTER);

Panel northPanel = new Panel();

tf.setEditable(false);

northPanel.add(tf);

f.add(northPanel, BorderLayout.NORTH);

}

public void go() {

f.pack();

f.setVisible(true);

}

/察悄**

* 采用成员内部类没没察方式,实现监听器接口,方便访问主类内类内部成员。 此类负责数字按钮Action事件监听和处理

*/

class NumberListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (!append) {

tf.setText(“”);

append = true;

}

String s = tf.getText();

s += e.getActionCommand();

tf.setText(s);

if (!btn[10].isEnabled()) {

for (int i = 10; i = 14; i++)

btn[i].setEnabled(true);

}

}

}

/**

* 成员内部类,负责操作符按钮的事件处理

*/

class OperatorListener implements ActionListener {

public void actionPerformed(ActionEvent e) {

if (!append)

return;

for (int i = 10; i = 14; i++)

btn[i].setEnabled(false);

String s = tf.getText();

long num = Long.parseLong(s);// get the number of textfield

append = false; // set append

switch (operator) {

case ‘+’:

result += num;

break;

case ‘-‘:

result -= num;

break;

case ‘*’:

result *= num;

break;

case ‘/’: {

if (num == 0)

result = 0;

else

result /= num;

break;

}

case ‘=’:

result = num;

break;

}

tf.setText(String.valueOf(result));

// set the value of result to textfield

String op = e.getActionCommand();

operator = op.charAt(0); // set operator

}

}

}

求用JAVA语言创建一个简单计算器

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.FlowLayout;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextArea;

public class calculator implements ActionListener {

JFrame frame=new JFrame();

private JButton[] b;

private JButton b2;

private JTextArea t;

private JButton jbtnsqrt;

private boolean flag=false;

public calculator() {

jbtnsqrt=new JButton(“Sqrt”);

b=new JButton[16];

b2=new JButton(“C”);

String str=”123+456-789×0.=/”;

for(int i=0;ib.length;i++){

b[i]=new JButton(str.substring(i,i+1));

}

}

private void setFontAndColor(){

Font f=new Font(“宋体”,Font.BOLD,18);

t.setFont(f);

for(int i=0;ib.length;i++){

b[i].setFont(f);

}

}

private void init(){

t=new JTextArea(1,20);

JPanel northPanel=new JPanel();

JPanel centerPanel=new JPanel();

northPanel.setLayout(new FlowLayout());

centerPanel.setLayout(new GridLayout(4,4));

northPanel.add(t);

northPanel.add(b2);

northPanel.add(jbtnsqrt);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

b2.setBackground(Color.RED);

b2.setForeground(Color.green);

b2.addActionListener(this);

jbtnsqrt.addActionListener(this);

for(int i=0;ib.length;i++){

centerPanel.add(b[i]);

b[i].addActionListener(this);

}

frame.setLayout(new BorderLayout());

frame.add(northPanel,BorderLayout.NORTH);

frame.add(centerPanel, BorderLayout.CENTER);

setFontAndColor();

frame.setLocation(340,300);

frame.setVisible(true);

frame.pack();

frame.setResizable(false);

}

public void actionPerformed(ActionEvent e) {

if(e.getSource()==b2) t.setText(null);//纯信橘点击C时做团清空文本域坦派

else if(e.getSource()==b[14]){ //点击=时读取文本域的字符串

String s=t.getText().trim();

String[] rs;

if(s.contains(“+”)){

rs=s.split(“\\+”);

double d=Double.parseDouble(rs[0])+Double.parseDouble(rs[1]);

t.setText(String.valueOf(d));

}

else if(s.contains(“-“)){

rs=s.split(“-“);

double d=Double.parseDouble(rs[0])-Double.parseDouble(rs[1]);

t.setText(String.valueOf(d));

}

else if(s.contains(“x”)){

rs=s.split(“x”);

double d=Double.parseDouble(rs[0])*Double.parseDouble(rs[1]);

t.setText(String.valueOf(d));

}

else if(s.contains(“/”)){

rs=s.split(“/”);

double d=Double.parseDouble(rs[0])/Double.parseDouble(rs[1]);

t.setText(String.valueOf(d));

}

flag=true;

}else if(e.getSource()==jbtnsqrt){

String s=t.getText().trim();

double d=Math.sqrt(Double.parseDouble(s));

t.setText(String.valueOf(d));

}

else {

if(flag){

t.setText(“”);

}

// 不点击=和C时,将字符串追加在文本域中

t.append(e.getActionCommand());

flag=false;

}

}

public static void main(String[] args) {

new calculator().init();

}

}

添加了开平方功能

修改了第二次计算时不清楚原来记录

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月21日 21:37:19
下一篇 2024年3月21日 21:45:27

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3400
  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4400
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4600
  • javascriptcanvas的简单介绍

    如何使用js在画布上绘制图形 1、可以使用 drawImage()方法把一幅图像绘制到画布上。 以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML 元素,以及绘制该图像的起点的 x 和 y 坐标。 2、效果图:使用JavaScript在画布中绘制文本图形首先我们来看看要在画布上绘制文本图形,需要用到的最重要的属性和方法:font属性:定义文本的字…

    2024年5月23日
    4200
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • cortexm4linux的简单介绍

    Cortex-M4的主要功能 Cortex-M4提供了无可比拟的功能,以将[1] 32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。 Cortex-M4核心具有浮点单元(FPU)单精度,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。 主要是m4比m3多了dsp的支…

    2024年5月23日
    4300
  • 3desjavaphp的简单介绍

    php的3des加密结果与java不一致 他们的加密算法都是通用的,是可以解开的,只要你des的模式,加密长度,初始向量什么的都一样就可以。 JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关。Padding(填充)属性定义元素边框与元素内容之间的空间。padding简写属性在一个声明中设置所有内边距属性。 要…

    2024年5月23日
    4700
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4200

发表回复

登录后才能评论



关注微信