JAVA简易计算器-lzy

合集下载

用java代码写的简易计算器(可以实现基本的加减乘除功能)

用java代码写的简易计算器(可以实现基本的加减乘除功能)

⽤java代码写的简易计算器(可以实现基本的加减乘除功能)package A;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.*;public class Calcular3 extends JFrame implements ActionListener,MouseListener{private int m1=0,n=0;//private double m2=0;//运算的数private int flag=0;JFrame f;JPanel p1,p2,p3;JTextField t;JButton b1[]=new JButton[18];String b[]= {"1","2","3","4","5","6","7","8","9","0","清空","退格",".","=","+","-","*","/"};public Calcular3(){f=new JFrame("计算器");t=new JTextField(35);p1=new JPanel();p2=new JPanel();p3=new JPanel();f.setBounds(100, 100, 400, 200);f.add(p1,BorderLayout.NORTH);f.add(p2,BorderLayout.CENTER);f.add(p3,BorderLayout.EAST);p2.setLayout(new GridLayout(5,3));p3.setLayout(new GridLayout(4,1));p1.add(t);for(int i=0;i<14;i++) {b1[i]=new JButton(b[i]);p2.add(b1[i]);b1[i].addActionListener(this);}for(int i=14;i<18;i++) {b1[i]=new JButton(b[i]);p3.add(b1[i]);b1[i].addActionListener(this);}/*for(int i=0;i<18;i++) {b1[i].addActionListener(this);}*/f.setVisible(true);}//实现接⼝的⽅法public void mouseClicked(MouseEvent e) {}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}public void actionPerformed(ActionEvent e) {String str="";int i;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {if(i==9) {n=n*10;}else {n=n*10+i+1;}str=String.valueOf(n);//整形n转换成字符串strt.setText(str);//显⽰到⽂本框上}}for(i=14;i<18;i++) {//+、-、*、/if(e.getSource()==b1[i]) {//匹配运算符m1=Integer.parseInt(t.getText());if(flag==15) {m2=m1+m2;}else if(flag==16) {m2=m1-m2;}else if(flag==17) {m2=m1*m2;}else if(flag==18) {m2=m1/m2;}else m2=m1;//若⽆连续的运算符运算,保存当前数据到m2 if(i==14) flag=15;else if(i==15) flag=16;else if(i==16) flag=17;else flag=18;str=String.valueOf(b[i]);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据break;//找到匹配数据退出循环}}if(e.getSource()==b1[13]) {//=m1=Integer.parseInt(t.getText());if(flag==15) {m2=m2+m1;}else if(flag==16) {m2=m2-m1;}else if(flag==17) {m2=m2*m1;}else if(flag==18) {m2=m2/m1;}else m2=m1;str=String.valueOf(m2);t.setText(str);//显⽰到⽂本框上n=0;//还原,记录下次数据flag=0;//flag还原0,表明没有未处理的运算符}if(e.getSource()==b1[10]) {//各变量变为0 清空m1=0;m2=0;flag=0;n=0;t.setText("0");//显⽰到⽂本框上}if(e.getSource()==b1[11]) {//退格m1=(int)(Double.parseDouble(t.getText())/10);n=m1;str=String.valueOf(m1);t.setText(str);}if(e.getSource()==b1[12]) {//⼩数点m1=Integer.parseInt(t.getText());str=String.valueOf(m1+b[12]);t.setText(str);//显⽰到⽂本框上int j=0;for(i=0;i<=9;i++) {if(e.getSource()==b1[i]) {j++;m2=Math.pow(0.1, j)*Integer.parseInt(b[i]);str=String.valueOf(m1+m2);t.setText(str);//显⽰到⽂本框上}}}}//主函数public static void main(String[] args) {new Calcular3();}}。

java简易计算器实训报告(一)

java简易计算器实训报告(一)

java简易计算器实训报告(一)Java简易计算器实训报告实训目的通过编写一个简易的Java计算器,深入了解Java基础语法,并掌握对象的属性和行为。

实训过程本次实训采用Eclipse编写Java程序,具体过程如下:1.首先创建一个名为“Calaulator”的Java项目,再在其中创建一个名为“Calaulator”的类。

2.在Calaulator类中定义一个名为“calculate”的方法,此方法接收3个参数:一个char类型的操作符,两个double类型的操作数,返回值为double类型。

3.在方法体中根据传入的操作符进行相应的加、减、乘、除运算。

4.创建一个主函数,在其中调用calculate方法并输出结果。

实训收获通过本次实训,我掌握了Java的基础语法,并深入了解了对象的属性和行为。

同时,我还学会了如何使用Eclipse编写Java程序,提高了自己的编程水平。

实训总结Java语言作为一种强大而稳定的编程语言,具有广泛的应用场景。

通过本次实训,我深刻认识到Java的重要性,并希望能够在以后的学习中不断探索Java语言的更多使用方法。

实训反思在实训过程中,我发现自己对Java的基础语法了解不够深入,导致编写代码时遇到一些困难,需要不断查阅相关资料。

同时,在调试代码时也遇到了许多问题,发现自己对IDE的使用不够熟练,需要更多的实践和学习。

实训展望通过本次实训,我已经初步掌握了Java的基础语法和编程思想,但我认为这只是一个开始。

我需要不断地练习,深入了解Java的各种特性,将其应用到实际开发中。

未来,我希望能够成为一名优秀的Java工程师,为社会做出自己的贡献。

结语本次Java简易计算器实训让我收获颇丰,不仅加深了对Java的认识,也增强了自己的编程实践能力。

希望今后能够在Java的学习和实践中不断提高自己,取得更好的成果。

简易计算器(Android应用使用Java开发)

简易计算器(Android应用使用Java开发)

简易计算器(Android应用使用Java开发)随着智能手机的普及,手机应用程序也变得越来越多样化和智能化。

其中,计算器应用无疑是人们生活中最常用的一种应用之一。

本文将介绍如何使用Java开发一个简易计算器的Android应用程序。

1. 概述简易计算器是一款可以进行基本的数学计算的应用程序。

用户可以在界面上输入数字和操作符,计算器会自动根据用户的操作给出计算结果。

本应用程序采用Java语言进行开发,运行于Android操作系统。

2. 开发环境在开始开发前,我们需要搭建好Android开发环境。

首先,下载并安装Java Development Kit(JDK),确保版本为最新稳定版。

然后,下载并安装Android Studio,这是一款为Android开发而设计的集成开发环境(IDE)。

3. 创建项目打开Android Studio,并点击"Start a new Android Studio project"来创建一个新的项目。

在弹出的窗口中,填写项目名称、包名等基本信息,并选择适当的设备和目标SDK版本。

4. 设计界面在项目创建完成后,我们需要设计计算器的界面。

可以使用Android Studio自带的可视化UI设计器来拖拽和放置UI元素,也可以手动在XML布局文件中编写界面代码。

界面的核心组件包括输入框、按钮和显示区域。

5. 添加逻辑功能界面设计完成后,我们需要为计算器添加逻辑功能。

创建一个Java类作为计算器的主活动(Activity),在其中实现输入和操作的处理逻辑。

可以使用Android提供的计算相关API,例如使用eval()方法进行表达式计算。

6. 编译和调试在开发过程中,我们可以随时进行编译和调试来检查应用程序的运行情况。

点击Android Studio的运行按钮,选择目标设备并运行应用程序。

在模拟器或真机上进行调试,查看是否符合我们的预期效果。

7. 测试和发布在功能开发和调试完毕后,我们需要进行应用的测试阶段。

《java简易计算器》Word文档

《java简易计算器》Word文档

//只可以做简易的加减乘除运算//每次运算结束之后必须按一下清除才可以进行第二次运算import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.awt.Event;public class Calculator {Button[] bt = new Button[10];//数字键Button bp,bj,bc,bu,bq,be;//分别对应的是加,减,乘,除,清除,等于public String numCache="";//缓存拿到的值,这个地方如果不赋初值的话会报错,就是必须在第一次使用前按下清除键public int num1,num2;//参加运算的值public String showNum="";//文本框显示的值public String operator="";//显示的运算符TextField tf;//文本框public int result;public static void main(String[] args) {new Calculator().setFrame();}/*frame*/public void setFrame() {Frame mFrame = new Frame("java简易计算器");//窗口Panel p1 = new Panel();//文本框的容器tf = new TextField(30);//文本框p1.add(tf);//添加文本框进入容器mFrame.add(p1,BorderLayout.NORTH);//将p1放到mFrame的北区域Panel p2 = new Panel();//存放button的容器p2.setLayout(new GridLayout(4,4));//放置button的p2容器,默认添加到center区//添加按钮bt[0] = new Button("0");bt[1] = new Button("1");bt[2] = new Button("2");bt[3] = new Button("3");bt[4] = new Button("4");bt[5] = new Button("5");bt[6] = new Button("6");bt[7] = new Button("7");bt[8] = new Button("8");bt[9] = new Button("9");bp = new Button("+");bj = new Button("-");bc= new Button("*");bu= new Button("/");bq= new Button("清除");be= new Button("=");//将button添加进panelfor(int i=0;i<10;i++) {p2.add(bt[i]);}p2.add(bp);p2.add(bj);p2.add(bc);p2.add(bu);p2.add(bq);p2.add(be);bp.addActionListener(new Monitor());bj.addActionListener(new Monitor());bc.addActionListener(new Monitor());bu.addActionListener(new Monitor());bq.addActionListener(new Monitor());be.addActionListener(new Monitor());mFrame.add(p2);mFrame.pack();//注册监听器类for(int i=0;i<10;i++) {bt[i].addActionListener(new Monitor());}mFrame.setBackground(Color.GRAY);//窗口的背景颜色mFrame.setVisible(true);//显示窗口mFrame.addWindowListener(new WindowAdapter(){//窗口的关闭事件public void windowClosing(WindowEvent e) {System.exit(-1);}});}//frame构造方法结束,第9行开始//事件监听class Monitor implements ActionListener {public void actionPerformed(ActionEvent e) {Button b = (Button)e.getSource();String str = b.getActionCommand();//如果按下的是运算符if(str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")) {//按下的是运算符if((numCache)!="") {num1 = Integer.parseInt(numCache);}operator = str;tf.setText(operator);numCache = "";showNum = "";//如果按下的是清除键}else if(str.equals("清除")) {showNum = "";numCache="";tf.setText("0.");//如果按下的是等号}else if(str.equals("=")) {num2 = Integer.parseInt(numCache);if(operator.equals("+")) {result = num1+num2;}else if(operator.equals("-")) {result = num1-num2;}else if(operator.equals("*")) {result = num1*num2;}else{if(num2==0) {tf.setText("被除数不能为零");return;}result = num1/num2;}tf.setText(result+"");num1 = 0;num2 = 0;result = 0;}else {//如果按下的是数字showNum = showNum+b.getActionCommand();numCache = numCache+b.getActionCommand();tf.setText(showNum);}}}}//bug报告:(注:素材和资料部分来自网络,供参考。

java简易计算器设计思路

java简易计算器设计思路

java简易计算器设计思路一、引言(200字)计算器是一种用于进行数学运算的工具,我们经常使用计算器进行简单的加减乘除等运算。

而在计算机编程中,我们也可以设计一个简易计算器的程序,用于实现基本的数学运算功能。

本文将围绕设计一个简易计算器展开,主要包括用户输入的处理、运算符的识别、表达式的计算以及结果的输出等内容。

二、用户输入的处理(200字)计算器首先需要能够接收用户输入的表达式,包括数字和运算符。

在Java中可以使用Scanner类来获取用户的输入。

首先,我们需要创建一个Scanner对象,然后使用nextLine(方法获取用户输入的一行字符串。

接下来,我们需要对输入的字符串进行处理,将数字和运算符分开。

可以使用String的split(方法将字符串按照特定的分隔符进行分割。

根据运算符的特性,常见的分隔符可以是空格、加号、减号、乘号、除号等。

将得到的数字和运算符分别存储在一个列表中,以便后续的处理。

三、运算符的识别(200字)在处理用户输入后,我们需要对运算符进行识别和分类,以便进行相应的数学运算。

Java中可以使用if语句或者switch语句来对运算符进行判断。

针对常见的运算符如加号、减号、乘号、除号等,可以使用简单的逻辑判断语句进行处理。

对于更为复杂的运算符,比如平方根、阶乘、求幂等,可以使用if-else的嵌套语句进行处理。

根据识别结果,我们可以调用相应的数学函数进行运算。

四、表达式的计算(200字)识别运算符后,我们需要对表达式进行计算。

计算器的基本原理是根据输入的数字和运算符进行相应的数学运算,并返回结果。

在Java中,可以使用各种数学运算符,比如加号、减号、乘号、除号、取模等进行计算。

不同的运算符有不同的运算规则,需要根据具体需求进行操作。

在计算过程中,我们需要注意异常情况的处理,比如除零错误、非法运算符等。

Java提供了异常处理机制,可以使用try-catch语句来捕获异常并进行处理。

简单计算器(java)

简单计算器(java)
JComboBox choiceFuhao;
JTextArea textShow;
JButton button;
OperatorListener operator; //监视ItemEvent时间的监听器
ComputerListener computer; //监视ActionEvent事件的监听器
choice=box;
}
public void setWorkTogether(ComputerListener computer){
workTogether=computer;
}
public void itemStateChanged(ItemEvent e) {
String fuhao=choice.getSelectedItem().toString();
简单计算器.java
package简单计算器;
publicclass简单计算器{
publicstaticvoidmain(String args[]){
WindowOperation win=newWindowOperation();
win.setBounds(100,100,390,360);
win.setTitle("简单计算器");
choiceFuhao.addItem(a[i]);
}
textShow=new JTextArea(9,30);
operator=new OperatorListener();
computer=new ComputerListener();
operator.setJCombobox(choiceFuhao);
import javax.swing.*;

用Java实现的计算器

用Java实现的计算器

用Java实现的计算器计算器是一个广泛应用的工具,用于进行数学运算。

如今,随着计算机技术的不断发展,计算器也逐渐被软件程序所替代。

本文将介绍如何使用Java语言实现一个简单的计算器程序。

一、程序概述计算器程序主要包括用户界面和计算逻辑两部分。

用户界面负责显示计算器的按钮和输入输出框,计算逻辑负责根据用户输入进行运算并返回结果。

二、用户界面设计在Java中,我们可以使用Swing或JavaFX等图形库来设计用户界面。

本文选用JavaFX来实现计算器的界面。

界面需要包括数字按钮、运算符按钮、输入输出框等组件。

在程序启动时,我们需要初始化界面并设置各个组件的位置、大小和样式。

为了方便布局,我们可以使用GridPane等布局管理器来管理组件。

三、计算逻辑实现1. 表达式解析计算器需要将用户输入的表达式解析为计算机可以识别的格式。

Java中可以使用正则表达式或者逆波兰表达式来解析表达式。

本文选用简单的正则表达式方法进行解析。

2. 运算逻辑解析表达式后,我们需要根据运算符的优先级进行运算。

Java中可以使用栈来实现运算符的优先级判断和运算。

我们可以定义一个操作数栈和一个运算符栈,按照规则将表达式中的数字和运算符依次入栈,并根据运算符的优先级进行运算并将结果入栈。

四、完整代码示例import javafx.application.Application;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Button;import javafx.scene.control.TextField;import yout.GridPane;import javafx.stage.Stage;public class Calculator extends Application {private TextField inputField; // 输入框private Button[] numberButtons; // 数字按钮private Button[] operatorButtons; // 运算符按钮@Overridepublic void start(Stage primaryStage) {primaryStage.setTitle("计算器");primaryStage.setResizable(false);// 初始化界面GridPane gridPane = new GridPane();gridPane.setHgap(10);gridPane.setVgap(10);gridPane.setPadding(new Insets(10));// 初始化输入框inputField = new TextField();inputField.setEditable(false);inputField.setPrefHeight(40);inputField.setMaxWidth(Double.MAX_VALUE);gridPane.add(inputField, 0, 0, 4, 1);// 初始化数字按钮numberButtons = new Button[10];for (int i = 0; i < 10; i++) {numberButtons[i] = createNumberButton(String.valueOf(i), i); }gridPane.add(numberButtons[7], 0, 1);gridPane.add(numberButtons[9], 2, 1);gridPane.add(numberButtons[4], 0, 2);gridPane.add(numberButtons[5], 1, 2);gridPane.add(numberButtons[6], 2, 2);gridPane.add(numberButtons[1], 0, 3);gridPane.add(numberButtons[2], 1, 3);gridPane.add(numberButtons[3], 2, 3);gridPane.add(numberButtons[0], 0, 4);gridPane.add(createDotButton(), 1, 4);gridPane.add(createEqualButton(), 2, 4);// 初始化运算符按钮operatorButtons = new Button[4];operatorButtons[0] = createOperatorButton("+"); operatorButtons[1] = createOperatorButton("-"); operatorButtons[2] = createOperatorButton("*"); operatorButtons[3] = createOperatorButton("/"); gridPane.add(operatorButtons[0], 3, 1);gridPane.add(operatorButtons[1], 3, 2);gridPane.add(operatorButtons[3], 3, 4);Scene scene = new Scene(gridPane);primaryStage.setScene(scene);primaryStage.show();}private Button createNumberButton(String text, int number) { Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + number);});return button;}private Button createDotButton() {Button button = new Button(".");button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + ".");});return button;}private Button createEqualButton() {Button button = new Button("=");button.setPrefSize(60, 40);button.setOnAction(e -> {String expression = inputField.getText();// 调用计算逻辑进行计算if (expression != null && !expression.isEmpty()) { double result = calculate(expression);inputField.setText(String.valueOf(result));}});return button;}private Button createOperatorButton(String text) {Button button = new Button(text);button.setPrefSize(60, 40);button.setOnAction(e -> {String oldText = inputField.getText();inputField.setText(oldText + text);});return button;}private double calculate(String expression) {// 进行计算逻辑的实现// ...}public static void main(String[] args) {launch(args);}}五、总结通过本文的介绍,我们可以了解到使用Java语言实现一个简单计算器的基本框架和思路。

用JAVA作一个简单的计算器

用JAVA作一个简单的计算器

⽤JAVA作⼀个简单的计算器刚刚学java不久尝试着做了⼀个简单的计算器接下来讲讲我的思路1.创建⼀个main函数public static void main(String[] args){}2.创建对象调⽤函数public static void main(String[] args){Demo06 demo06 = new Demo06();//创建对象调⽤函数}3.创建scanner函数获取⽤户的数据public static void main(String[] args){Demo06 demo06 = new Demo06();//创建对象调⽤函数Scanner scanner = new Scanner(System.in);//scanner创建,获取⽤户数据}4.输⼊第⼀个值public static void main(String[] args){Demo06 demo06 = new Demo06();//创建对象调⽤函数Scanner scanner = new Scanner(System.in);//scanner创建,获取⽤户数据System.out.println("请输⼊⼀个值");}5.double 数据定义⽤⽤nextdouble 接受double的第⼀个数据public static void main(String[] args){Demo06 demo06 = new Demo06();//创建对象调⽤函数Scanner scanner = new Scanner(System.in);//scanner创建,获取⽤户数据System.out.println("请输⼊⼀个值");double a = scanner.nextDouble();//接受double类型的数据}6.注意这⾥可以分解,可以再输出⼀个运算符,为了清楚可以这么写,但没必要,string定义符号是字符型接受⽤next // System.out.println("请输⼊运算符:");String operator = scanner.next();//接收字符串数据注意:这边说下之前next 和nextline 区别 next 是不能够空格的,就算空格也只能够取前⾯的,⽽ nextline 可以把空格后⾯的都能够取到7.double 数据定义⽤ nextdouble 接受double的第⼆个数据// System.out.println("请输⼊⼀个数");double b = scanner.nextDouble();//接受double类型的数据注意:这边也是⼀样可以再写⼀个输出8.⽤double类型来定义结果 resultdouble result = 0;9.接下来要写外部的⽅法了,分别定义加减乘余,并返回⽅法public static double add(double a,double b){return a+b;}//加法public static double minus(double a,double b){return a-b;}//减法public static double multiply(double a,double b){return a*b;}//乘法public static double divide(double a,double b){return a/b;}//除法public static double remainder(double a,double b){return a%b;}//余10.回到主函数分别来调⽤外⾯的⽅法,这⾥⽤if else if 来判断是否输⼊的⽅法等等于当前的符号if ("+".equals(operator)){//如果输⼊的运算符等于加号就进来result = add(a,b);//结果,调⽤加}else if("-".equals(operator)){result = minus(a,b);//结果,调⽤减}else if("*".equals(operator)){result = multiply(a,b);//结果,调⽤乘}else if("/".equals(operator)){result = divide(a,b);//结果,调⽤除}else if("%".equals(operator)){result = remainder(a,b);//结果,调⽤余}注意:"-".equals(operator), "".equals()这个⽅式是字符串的== ,⽤来判断字符串的相等的,切记不能够⽤==,会报错11.最后输出结果System.out.println("结果:"+result);12.奉上完整的代码package com.lx.method;import java.util.Scanner;public class Demo06 {//做⼀个简单的计算器public static double add(double a,double b){return a+b;}//加法public static double minus(double a,double b){return a-b;}//减法public static double multiply(double a,double b){return a*b;}//乘法public static double divide(double a,double b){return a/b;}//除法public static double remainder(double a,double b){return a%b;}//余public static void main(String[] args) {Demo06 demo06 = new Demo06();//创建对象调⽤函数Scanner scanner = new Scanner(System.in);//scanner创建,获取⽤户数据System.out.println("请输⼊⼀个值");double a = scanner.nextDouble();//接受double类型的数据// System.out.println("请输⼊运算符:");String operator = scanner.next();//接收字符串数据// System.out.println("请输⼊⼀个数");double b = scanner.nextDouble();//接受double类型的数据double result = 0;if ("+".equals(operator)){//如果输⼊的运算符等于加号就进来result = add(a,b);}else if("-".equals(operator)){result = minus(a,b);}else if("*".equals(operator)){result = multiply(a,b);}else if("/".equals(operator)){result = divide(a,b);}else if("%".equals(operator)){result = remainder(a,b);}System.out.println("结果:"+result);}}结果:莫%运算在上⾯结果中我就在来说下% 运算吧,从刚刚结果看来我们得出以下⼏个要点1. 如果 a % b , a>b ,那么外⾯就拿a除以b余下来的值,我们拿余下来的数20 %11 = 92. 如果a % b , a=b ,那么等于b 相除下来余数就是0 ,我们就拿 020 % 10 = 03. 如果 a % b , a<b , 那么我们就拿a的⾃⼰20 % 1000 = 20。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JAVA简易计算器系统流程实现,总体能完成一个计算器的基本功能,但仍有许多地方需要改进,比如小数点的实现所存在的一些问题,虽然在基本的运算过程当中不会造成太大影响,但这依然不能认为是一个很好的计算器,同时,在另一方面,该计算器还没能很好的实现连续计算的功能,必须每次按下等号按钮计算出结果后才能用产生的结果接着进行下一次的计算,改进的方法是在运算符上同时注册Result类,让运算符同时拥有计算结果的功能.实现代码import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import bel;import java.awt.Panel;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.SwingConstants;public class Calculator extends WindowAdapter implements ActionListener { JFrame frame;JTextField show;JButton bc, c, ce, ab, jia, jian, cheng, chu, equ, point, sqrt, ds, bfh, zf;// 按钮退格,清空,复位,关于,加,减,乘,除,等号,小数点,2次方根,倒数,百分号,正负号JButton b[] = new JButton[10]; // 按钮数组,数字键0~9double sum = 0, getValue;int i = 0, j = 0, p = 0, l, action;JDialog about;final int slength = 30; // 设置结果显示有效长度public void disp() {frame = new JFrame();frame.setTitle("bbb的个人计算器");frame.setSize(360, 230);frame.setLocation(380, 260);frame.setBackground(Color.LIGHT_GRAY);frame.setLayout(new FlowLayout(FlowLayout.CENTER));frame.setResizable(false);//计算器disTop模块,包括数字显示文本框、back,ce,c,about按钮show = new JTextField(31);show.setText("0");show.setHorizontalAlignment(SwingConstants.RIGHT);show.setEditable(false);frame.add(show);Panel dispTop = new Panel();frame.add(dispTop);dispTop.setLayout(new GridLayout(1, 4, 3, 3));bc = new JButton(" Back ");bc.setForeground(Color.BLUE);dispTop.add(bc);ce = new JButton(" CE ");ce.setForeground(Color.BLUE);dispTop.add(ce);c = new JButton(" C ");c.setForeground(Color.BLUE);dispTop.add(c);//广告按钮,显示计算器制作者ab = new JButton(" About ");ab.setForeground(Color.BLUE);dispTop.add(ab);about = new JDialog(frame, "关于计算器", true);Label ct = new Label("本计算器由 bbb 制作", 1);ct.setForeground(Color.RED);about.add(ct, "Center");about.setSize(200, 100);about.setLocation(500, 300);//主要按钮显示面板包括disLeft和disRightPanel dispMain = new Panel();frame.add(dispMain);dispMain.setLayout(new GridLayout(1, 2, 10, 10));//disLeft面板,包括0-9、+/-、。

这十二个按钮Panel dispLeft = new Panel();dispMain.add(dispLeft);dispLeft.setLayout(new GridLayout(4, 3, 3, 3));Panel dispRight = new Panel();//disRight面板,包括+、-、*、/、sqrt、%、1/x、=这个人几个按钮dispMain.add(dispRight);dispRight.setLayout(new GridLayout(4, 2, 3, 3));//新建0-9这是个按钮,并将其添加到disLeft中for (l = 9; l >= 0; l--) {b[l] = new JButton(String.valueOf(l));dispLeft.add(b[l]);b[l].addActionListener(this);}//新建其余按钮,并分别将其添加到各自的面板中jia = new JButton("+");jia.setForeground(Color.RED); jian = new JButton("-");jian.setForeground(Color.RED); cheng = new JButton("*"); cheng.setForeground(Color.RED); chu = new JButton("/");chu.setForeground(Color.RED); equ = new JButton("=");equ.setForeground(Color.RED); point = new JButton(".");zf = new JButton(" +/- ");sqrt = new JButton("sqrt");bfh = new JButton("%");ds = new JButton("1/x"); dispRight.add(chu);dispRight.add(sqrt); dispRight.add(cheng); dispRight.add(bfh);dispRight.add(jian); dispRight.add(ds);dispRight.add(jia);dispRight.add(equ);dispLeft.add(zf);dispLeft.add(point);//为各个按钮绑定监听器about.addWindowListener(this); bc.addActionListener(this); ce.addActionListener(this);c.addActionListener(this);ab.addActionListener(this); jia.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); equ.addActionListener(this); point.addActionListener(this); zf.addActionListener(this); sqrt.addActionListener(this); bfh.addActionListener(this); ds.addActionListener(this); frame.addWindowListener(this); frame.setVisible(true);}public void actionPerformed(ActionEvent e) {getValue = Double.valueOf(show.getText()).doubleValue();if (e.getSource() == jia) { // 加运算,可连加if (j == 0) {sum = getValue;} else if (action == 1) {sum += getValue;}setSum();j++;p = 0;i = 0;action = 1;} else if (e.getSource() == jian) { // 减运算,可连减if (j == 0) {sum = getValue;} else if (action == 2) {sum -= getValue;}setSum();j++;p = 0;i = 0;action = 2;} else if (e.getSource() == cheng) { // 乘运算,可连乘if (j == 0) {sum = getValue;} else if (action == 3) {sum *= getValue;}setSum();j++;p = 0;i = 0;action = 3;} else if (e.getSource() == chu) { // 除运算,可连除if (j == 0)sum = getValue;else if (action == 4) {sum /= getValue;}setSum();j++;p = 0;i = 0;action = 4;} else if (e.getSource() == equ) { // 等号,运算最后一个操作数switch (action) {case 1:show.setText(String.valueOf(sum += getValue));break;case 2:show.setText(String.valueOf(sum -= getValue));break;case 3:show.setText(String.valueOf(sum *= getValue));break;case 4:show.setText(String.valueOf(sum /= getValue));break;}setSum();i = 0;j = 0;action = 0;} else if (e.getSource() == point) { // 小数点,只能按一个小数点if (p == 0)show.setText(show.getText() + e.getActionCommand());p = 1;} else if (e.getSource() == c || e.getSource() == ce) { // 清空与复位i = 0;j = 0;p = 0;sum = 0;action = 0;show.setText("0");} else if (e.getSource() == bc) { // 退格String s = show.getText();if (s.length() > 1) {show.setText("");for (l = 0; l < s.length() - 1; l++) { // 按一下,删除尾部一位char a = s.charAt(l);show.setText(show.getText() + a);}} elseshow.setText("0");} else if (e.getSource() == ab) { // 关于about.setVisible(true);} else if (e.getSource() == sqrt) { // 开2次方根sum = Math.sqrt(getValue);setSum();i = 0;} else if (e.getSource() == ds) { // 求倒数sum = 1 / getValue;setSum();i = 0;} else if (e.getSource() == bfh) { // 百分号sum = getValue / 100;setSum();i = 0;} else if (e.getSource() == zf) { // 正负号切换,正号不显示String s = show.getText();char a = s.charAt(0);if (a == '-') {show.setText("");for (l = 1; l < s.length(); l++) { // 去掉负号show.setText(show.getText() + s.charAt(l));}} else if (getValue != 0) { // 加上负号show.setText("-" + s);}}for (l = 0; l < 10; l++) { // 0~9数字键触发if (e.getSource() == b[l]) {if (i == 0)show.setText("");String s = show.getText();if (s.length() < slength)show.setText(show.getText() + e.getActionCommand());if (e.getSource() == b[0] && getValue == 0 && p == 0)show.setText("0");if (e.getSource() != b[0] && getValue == 0 && p == 0)show.setText(e.getActionCommand());i++;// i用来标记数字键触发的状态}}}public void setSum() { // 把计算结果显示出来show.setText(String.valueOf(sum));String s = show.getText();char a = s.charAt((s.length() - 1));char b = s.charAt((s.length() - 2));if (a == '0' && b == '.') { // 如果是整数,则去掉后面的小数点和0 show.setText(String.valueOf(Math.round(sum)));}}public void windowClosing(WindowEvent e) {if (e.getSource() == about)about.setVisible(false);else if (e.getSource() == frame)System.exit(0);}public static void main(String args[]) {new Calculator().disp();}}运行结果整体界面如图所示:测试结果:123+456= 123-456= 123*456=123/456= 1/10=16^0.5=。

相关文档
最新文档