java_caculator_钱宇坤_2011435112
- 格式:doc
- 大小:112.05 KB
- 文档页数:9
近年来,随着计算机和互联网的飞速发展,编程语言也愈发受到重视。
其中,Java作为一种广泛应用的编程语言,其计算方法备受程序员们关注。
在本文中,我将深入探讨Java计算方法的相关内容,以便读者能更深入地理解这一主题。
1. Java计算方法的基础概念在Java中,计算方法是通过运算符和表达式来实现的。
常见的运算符包括加减乘除、取模、自增自减等,而表达式可以由常量、变量、运算符和方法调用等组成。
通过合理地组合运算符和表达式,便可以实现各种复杂的计算操作。
2. Java计算方法的数据类型在Java中,数据类型对计算方法起着至关重要的作用。
Java中的数据类型包括基本数据类型和引用数据类型,其中基本数据类型包括整型、浮点型、字符型和布尔型等。
不同的数据类型对应着不同的计算方法,了解数据类型的特点和适用范围有助于更加灵活地运用计算方法。
3. Java计算方法的流程控制除了基本的运算操作外,Java还提供了丰富多样的流程控制语句,如if-else语句、switch语句、for循环、while循环和do-while循环等。
这些流程控制语句可以根据条件和循环来控制计算方法的执行流程,使程序具有更强的逻辑性和灵活性。
4. Java计算方法的函数和方法在Java中,函数和方法是实现计算操作的重要手段。
函数是一段独立的代码块,可以被多次调用,而方法则是用于实现特定功能的代码块。
了解如何定义和调用函数、方法,以及它们的参数传递和返回值等内容,对提高计算方法的效率和复用性至关重要。
5. 个人观点和理解通过对Java计算方法的深入理解和实践,我深切体会到,计算方法的灵活运用可以大大提高程序的效率和可维护性。
Java语言本身具有丰富的计算方法支持和优秀的跨评台性能,使得它成为众多开发者的首选语言之一。
总结与回顾通过本文的阐述,我对Java计算方法进行了全面深入的探讨,从基础概念、数据类型、流程控制、函数方法到个人观点和理解,全方位地展现了Java计算方法的重要性和应用价值。
今天闲着没事,用java写了一个简单计算器,能实现简单的数据计算。
语言:java开发环境:eclipse(因为是按自己的想法写的,所以有些不尽人意的地方请谅解,希望对初学java者有些许帮助,有不好理解的地方,我尽量注释,有不理解的可以在百度HI我)事先一定要安装好JDK,可以在下载,配置好环境变量,再安装好eclipse,也可以在网上下载到,具体自己去找;然后打开eclipse建立一个工程,取名随便,我这里取名Calculator;然后在建立好的工程里面新建两个包,报名也自己取,尽量易懂,容易让人理解;我这里建立了两个包,Client和UI,等下在Client里面放的是主函数,UI里面放的是界面文件和控制器;好了下面开始写代码;一、先写界面代码:在UI包里面新建一个Class文件,取名自己想,这里我写的是CalculatorFramepackage ui;import java.awt.Color;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.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.border.TitledBorder;public class CalculatorFrame extends JFrame {private static final long serialV ersionUID = 1L;public String opt;public String str;private JTextArea show;private ClientContext clientContext;//引用控制器对象/*因为调用了控制器里面的方法,所以要对控制器的对象进行赋值,否则运行会出现空指针异常*/public void setClientContext(ClientContext clientContext) {this.clientContext = clientContext;}public CalculatorFrame() {init();}private void init() {setTitle(" Simple Calculator");setBounds(533, 184, 300, 400);setContentPane(creatContentPane());}private JPanel creatContentPane() {JPanel p = new JPanel(new GridLayout(4, 1)); /* 在面板里面添加4个面板*/p.add(showPane());//显示屏p.add(btnPane1());//下面三个都是按钮p.add(btnPane2());p.add(btnPane3());return p;}/*实现各个面板*/private JScrollPane showPane() {JScrollPane p = new JScrollPane();p.setBorder(new TitledBorder("Display:"));show = new JTextArea();show.setFont(new Font("",Font.PLAIN,25));show.setForeground(Color.RED);show.setLineWrap(true);show.setEditable(false);p.getViewport().add(show);return p;}private JPanel btnPane1() {JPanel p = new JPanel(new GridLayout(2, 4));JButton add = new JButton("+");JButton jian = new JButton("-");JButton cheng = new JButton("*");JButton chu = new JButton("/");JButton one = new JButton("1");JButton two = new JButton("2");JButton three = new JButton("3");JButton anser = new JButton("=");p.add(add);p.add(jian);p.add(cheng);p.add(chu);p.add(one);p.add(two);p.add(three);p.add(anser);/*用内部类实现按钮监视器,后面的都是这样*/one.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String number = show.getText() + String.valueOf(1);//按了数字“1”按//钮后,操作显示屏,既更新一下显示屏clientContext.setNumber(number);//调用控制器里面的方法}});two.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {String number = show.getText() + String.valueOf(2);;clientContext.setNumber(number);}});three.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(3);clientContext.setNumber(number);}});add.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {opt = "+";clientContext.setOpt(opt);}});jian.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubopt = "-";clientContext.setOpt(opt);}});cheng.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubopt = "*";clientContext.setOpt(opt);}});chu.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubopt = "/";clientContext.setOpt(opt);}});anser.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) { str = "=";clientContext.setAnswer(str);}});return p;}private JPanel btnPane2() {JPanel p = new JPanel(new GridLayout(2, 4));JButton four = new JButton("4");JButton five = new JButton("5");JButton six = new JButton("6");JButton pi = new JButton("PI");JButton seven = new JButton("7");JButton eight = new JButton("8");JButton nine = new JButton("9");JButton com = new JButton(".");p.add(four);p.add(five);p.add(six);p.add(pi);p.add(seven);p.add(eight);p.add(nine);p.add(com);four.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(4);clientContext.setNumber(number);}});five.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(5);clientContext.setNumber(number);}});six.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String number = show.getText() + String.valueOf(6);clientContext.setNumber(number);}});seven.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(7);clientContext.setNumber(number);}});eight.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(8);clientContext.setNumber(number);}});nine.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(9);clientContext.setNumber(number);}});com.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubsetShow(show.getText() + ".");}});pi.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {setShow(String.valueOf(Math.PI));}});return p;}private JPanel btnPane3() {JPanel p = new JPanel(new GridLayout(2, 4));JButton zero = new JButton("0");JButton sqrt = new JButton("√");JButton guiling = new JButton("C");final JButton help = new JButton("Help");p.add(zero);p.add(sqrt);p.add(guiling);p.add(help);help.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubJOptionPane.showMessageDialog(help, "注意:假如第二运算数为空的话,这里将默认为0.0!");}});guiling.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubclientContext.setMc();}});zero.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubString number = show.getText() + String.valueOf(0);clientContext.setNumber(number);}});sqrt.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubsetShow("" + Math.sqrt(getShow()));}});return p;}/*更新计算器的显示屏*/public void setShow(String str) {show.setText(str);}/*获取当前显示屏里面的数据*/public Double getShow() {String str = show.getText();if (str.equals("")) {str = "0.0";}return Double.valueOf(str);}/*获取当前选择的运算符:比如加或减或乘或除*/ public String getOpt() {return this.opt;}}二、写控制器代码在UI包建立一个Class,我取名ClientContext package ui;import java.util.ArrayList;import java.util.List;import javax.swing.JOptionPane;public class ClientContext {private CalculatorFrame calculatorFrame;private Double first = 0.0;private Double next = 0.0;public void setCalculatorFrame(CalculatorFrame calculatorFrame) {this.calculatorFrame = calculatorFrame;}double sum = 0;public void setNumber(String str) {calculatorFrame.setShow(str);}public void setOpt(String opt) {first = calculatorFrame.getShow();calculatorFrame.setShow("");}public void setAnswer(String str) {//按了“=”后,对数据按运算符进行计算next = calculatorFrame.getShow();// calculatorFrame.setShow(str);// switch(str){//// }if (calculatorFrame.getOpt() == "+") {double answer = first + next;calculatorFrame.setShow(String.valueOf(answer));} else if (calculatorFrame.getOpt() == "-") {double answer = first - next;calculatorFrame.setShow(String.valueOf(answer));} else if (calculatorFrame.getOpt() == "*") {double answer = first * next;calculatorFrame.setShow(String.valueOf(answer));} else if (calculatorFrame.getOpt() == "/") {if (next == 0) {calculatorFrame.setShow("对不起,除数不能为0");} else {double answer = first / next;calculatorFrame.setShow(String.valueOf(answer));}} else {calculatorFrame.setShow(String.valueOf(calculatorFrame.getShow()));}}public void setMc() {// TODO Auto-generated method stubcalculatorFrame.setShow("");first = 0.0;next = 0.0;calculatorFrame.opt=null;}}三、写主方法在Client包里面新建Class,我取名Mainpackage client;import javax.swing.JOptionPane;import ui.CalculatorFrame;import ui.ClientContext;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubCalculatorFrame c = new CalculatorFrame();c.setV isible(true);ClientContext clientContext = new ClientContext();c.setClientContext(clientContext);clientContext.setCalculatorFrame(c);}}最后运行后如下:。
Java科学计算法是一种使用Java编程语言进行科学计算的方法。
Java科学计算法可以用于各种科学领域,如物理学、化学、生物学、工程学等。
它使用Java的强大功能和科学计算库,如Java Math库和JavaFX库,来处理复杂的数学问题,如微积分、线性代数、概率统计等。
在Java科学计算法中,可以使用Java的数值类型,如double和float,来存储和处理数值数据。
这些数值类型提供了高精度的浮点运算,可以处理各种科学计算中的复杂问题。
此外,Java还提供了许多数学函数库,如Java Math库和Apache Commons Math库,这些库提供了许多数学函数和算法的实现,如三角函数、指数函数、对数函数等。
在Java科学计算法中,可以使用循环和条件语句来处理复杂的数学问题。
Java提供了许多控制流语句,如for循环、while循环、if语句和switch语句,这些语句可以帮助程序员编写高效的算法和程序。
此外,Java还提供了许多数据结构和算法库,如Java Collections Framework和Java Stream API,这些库可以帮助程序员处理大规模的数据集和复杂的数据结构。
在Java科学计算法中,可以使用图形用户界面(GUI)库来创建可视化界面。
JavaFX库是Java 的一个图形用户界面库,它提供了许多可视化组件和动画效果,可以帮助程序员创建美观和交互式的可视化界面。
通过使用JavaFX库,程序员可以轻松地将科学计算的结果可视化,以便更好地理解和解释结果。
总之,Java科学计算法是一种使用Java编程语言进行科学计算的方法。
它使用Java的数值类型、数学函数库、控制流语句和图形用户界面库来处理复杂的数学问题。
通过使用Java 科学计算法,程序员可以更高效地编写科学计算程序,并更好地理解和解释结果。
Java 数字转科学计数法在实际开发过程中,我们经常会遇到处理大量数据的情况,而这些数据往往会以科学计数法的形式出现。
在 Java 中,我们要学会如何将数字转换为科学计数法表示,以便更好地处理这些数据。
我们需要了解什么是科学计数法。
科学计数法是一种用来表示非常大或非常小的数字的方法,它包括两部分:一个基数和一个指数。
基数通常是一个在1和10之间的数,而指数是10的整数次幂。
1.23 × 10^4 和4.56 × 10^-6 都是科学计数法表示的数字。
接下来,我们将讨论如何在 Java 中实现将数字转换为科学计数法表示的方法。
1. 使用 String.format 方法Java 中的 String.format 方法可以方便地将一个数字转换为科学计数法表示。
```javadouble number = xxx;String scientificNotation = String.format(".2e", number);```在这个例子中,我们将 xxx 转换为科学计数法,并且限制小数位数为2。
结果将会是 "1.23e+08"。
2. 使用 DecimalFormat 类另一种方法是使用 DecimalFormat 类来格式化数字为科学计数法。
```javadouble number = xxx;DecimalFormat df = new DecimalFormat("0.00E0");String scientificNotation = df.format(number);```在这个例子中,我们同样将 xxx 转换为科学计数法,并且限制小数位数为2。
结果同样为 "1.23E8"。
3. 自定义方法如果我们需要更加灵活地控制科学计数法的格式,可以通过自定义方法来实现。
```javapublic static String convertToScientificNotation(double number, int decimalPlaces) {double exponent =Math.floor(Math.log10(Math.abs(number)));double mantissa = number / Math.pow(10, exponent);return String.format("." + decimalPlaces + "fE+03.0f", mantissa, exponent);}```在这个例子中,我们自定义了一个 convertToScientificNotation 方法,可以传入数字和小数位数,返回对应的科学计数法表示。
java转换科学计数法在科学计数法中,一个数将被写成一个数字和一个指数的乘积,其中数字通常在1到10之间。
例如,1.23×10^6表示1.23乘以10的6次方(或1,230,000)。
在Java程序中,可以使用NumberFormat类将一个数从科学计数法格式转换为常规数字格式,或者反之。
下面将介绍如何使用Java转换科学计数法。
1. 将科学计数法转换为常规数字格式要将一个数从科学计数法转换为常规数字格式,可以使用NumberFormat类的format()方法。
下面是一个Java代码示例,演示如何将一个数从科学计数法格式转换为常规数字格式:```import java.text.NumberFormat;public class ScientificToDecimal {}```在上面的示例中,我们使用format()方法将1.23E6转换为常规数字格式。
首先,我们创建一个NumberFormat对象,然后使用setGroupingUsed(false)方法禁止分组,这是因为常规数字格式不包含分组。
最后,我们使用format()方法将科学计数法转换为常规数字格式,并输出结果,结果为"1230000"。
在上面的示例中,我们使用String.format()方法将1234567.89转换为科学计数法。
在参数字符串中,%E表示以科学计数法输出,%f表示以常规数字格式输出。
最后,我们输出结果,结果为"1.234568E+06"。
3. 使用BigDecimal进行科学计数法转换```import java.math.BigDecimal;import java.math.RoundingMode;在上面的示例中,我们使用BigDecimal类将一个常规数字格式转换为科学计数法。
首先,我们使用new BigDecimal()方法将一个字符串转换为BigDecimal,然后使用setScale()方法设置精度和舍入模式。
java绝对值的方法Java绝对值的方法介绍在Java编程中,我们经常需要计算一个数的绝对值。
Java提供了多种方法来实现这一功能。
本文将介绍几种常用的方法,以及它们的使用和区别。
Math类的abs方法Math类是Java提供的一个用于数学计算的工具类,其中的abs 方法可以用于计算一个数的绝对值。
该方法的使用非常简单,只需要传入一个数作为参数,即可返回该数的绝对值。
示例代码:int num = -5;int absNum = (num);("绝对值为:" + absNum);Integer类的方法除了Math类的abs方法外,Java的Integer类也提供了计算绝对值的方法。
intValue方法Integer类的intValue方法可以将一个Integer对象转换为int 类型的值。
通过先将Integer对象转换为int类型后再调用Math类的abs方法,即可计算得到绝对值。
示例代码:Integer num = -5;int absNum = (());("绝对值为:" + absNum);abs方法Integer类还提供了一个名为abs的静态方法,直接调用该方法即可计算一个整数的绝对值。
示例代码:Integer num = -5;int absNum = (num);("绝对值为:" + absNum);BigDecimal类的方法如果需要计算一个浮点数的绝对值,可以使用Java的BigDecimal类进行处理。
abs方法BigDecimal类的abs方法可以用于计算一个BigDecimal对象的绝对值。
该方法返回的是一个新的BigDecimal对象,不会修改原来的对象。
示例代码:BigDecimal num = new BigDecimal("-");BigDecimal absNum = ();("绝对值为:" + absNum);总结通过本文的介绍,我们了解了在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中有许多内置的数学函数可以用于进行数学运算,常见的数学函数包括:
1. Math.abs(x):返回x的绝对值。
2. Math.sqrt(x):返回x的平方根。
3. Math.pow(x, y):返回x的y次幂。
4. Math.exp(x):返回e的x次幂。
5. Math.log(x):返回x的自然对数。
6. Math.sin(x):返回x的正弦值。
7. Math.cos(x):返回x的余弦值。
8. Math.tan(x):返回x的正切值。
9. Math.atan(x):返回x的反正切值。
10. Math.max(x, y):返回x和y中较大的值。
11. Math.min(x, y):返回x和y中较小的值。
12. Math.ceil(x):返回大于或等于x的最小整数。
13. Math.floor(x):返回小于或等于x的最大整数。
14. Math.round(x):返回最接近x的整数。
这些函数都属于Math类的静态方法,可以直接通过类名调用。
除了上述常见的数学函数,还有一些其他的数学函数可以参考Java官方文档。
//把代码改成Calc.java编译运行,完整版计算器,最下面是计算器界面import java.awt.*;import java.awt.event.*;public class Calc extends WindowAdapter implements ActionListener, MouseListener{Color cMoveOut=new Color(240 ,240 ,240);Color cMoveIn =new Color( 255,255,55);//状态变量boolean clicked=true;//判断是否单击了小数点boolean clear=true;//判断是否单击了符号位double previous;//记录第一个操作数double next;//记录第二个操作数String fuhao;//记录符号位int first=1;//标记是否开始一次新的运算过程Frame f;Panel p1,p2;TextField tf;Font fnt;Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b0;Button bDiv,bSqrt,bMulti,bMinus,bPercent,bPlus,bReciprocal,bEqual,bDot,bNegative,bBack;Button bPingFang , bDaoShu , bSin, bCos ,bTan;Button bC;GridLayout p2Layout;public void display(){f=new Frame("计算器");f.setSize(280,213);f.setLocation(200,200);f.setBackground(Color.LIGHT_GRAY);f.setResizable(false);p1=new Panel(new FlowLayout());tf=new TextField(35);tf.setText("0.");tf.setEditable(false);p1.add(tf);f.add(p1,BorderLayout.NORTH);p2Layout=new GridLayout(5,5,5,4);p2=new Panel(p2Layout);f.add(p2,BorderLayout.CENTER);fnt=new Font("Serief",Font.BOLD,20);b1=new Button("1");b1.setFont(fnt);b2=new Button("2");b2.setFont(fnt);b3=new Button("3");b3.setFont(fnt);b4=new Button("4");b4.setFont(fnt);b5=new Button("5");b5.setFont(fnt);b6=new Button("6");b6.setFont(fnt);b7=new Button("7");b7.setFont(fnt);b8=new Button("8");b8.setFont(fnt);b7.setFont(fnt);b9=new Button("9");b9.setFont(fnt);b0=new Button("0");b0.setFont(fnt);b9.setFont(fnt);bPingFang=new Button("^2"); bPingFang.setFont(fnt); bDaoShu=new Button("1/X"); bDaoShu.setFont(fnt);bSin=new Button("sin");bSin.setFont(fnt);bCos=new Button("cos"); bCos.setFont(fnt);bTan=new Button("tan"); bTan.setFont(fnt);b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);b7.addActionListener(this);b8.addActionListener(this);b9.addActionListener(this);b0.addActionListener(this); bBack=new Button("Back");//退格bBack.setFont(fnt);bC=new Button("C");//清空bC.setFont(fnt);bDiv=new Button("/");bDiv.setFont(fnt);bSqrt=new Button("sqrt"); bSqrt.setFont(fnt);bMulti=new Button("*"); bMulti.setFont(fnt);bMinus=new Button("-"); bMinus.setFont(fnt);bPercent=new Button("%"); bPercent.setFont(fnt);bPlus=new Button("+"); bPlus.setFont(fnt);bEqual=new Button("="); bEqual.setFont(fnt);bDot=new Button(".");bDot.setFont(fnt);bNegative=new Button("+/-"); bNegative.setFont(fnt); bBack.addActionListener(this);bC.addActionListener(this); bDiv.addActionListener(this); bSqrt.addActionListener(this); bPingFang.addActionListener(this); bPercent.addActionListener(this); bDaoShu.addActionListener(this); bMulti.addActionListener(this); bPlus.addActionListener(this); bMinus.addActionListener(this); bMulti.addActionListener(this); bDiv.addActionListener(this); bSin.addActionListener(this); bCos.addActionListener(this); bTan.addActionListener(this); bEqual.addActionListener(this); bDot.addActionListener(this); bNegative.addActionListener(this); bSqrt.addMouseListener(this); bPingFang.addMouseListener(this); bPercent.addMouseListener(this); bC.addMouseListener(this); bBack.addMouseListener(this);b7.addMouseListener(this);b8.addMouseListener(this);b9.addMouseListener(this); bDiv.addMouseListener(this); bDaoShu.addMouseListener(this); b4.addMouseListener(this);b5.addMouseListener(this);b6.addMouseListener(this); bMulti.addMouseListener(this); bSin.addMouseListener(this);b1.addMouseListener(this);b2.addMouseListener(this);b3.addMouseListener(this); bMinus.addMouseListener(this); bCos.addMouseListener(this);b0.addMouseListener(this); bDot.addMouseListener(this); bEqual.addMouseListener(this); bPlus.addMouseListener(this); bTan.addMouseListener(this);p2.add(bSqrt);p2.add(bPingFang);p2.add(bPercent);p2.add(bC);p2.add(bBack);p2.add(b7);p2.add(b8);p2.add(b9);p2.add(bDiv);p2.add(bDaoShu);p2.add(b4);p2.add(b5);p2.add(b6);p2.add(bMulti);p2.add(bSin);p2.add(b1);p2.add(b2);p2.add(b3);p2.add(bMinus);p2.add(bCos);p2.add(b0);p2.add(bDot);p2.add(bEqual);p2.add(bPlus);p2.add(bTan);f.setV isible(true);f.addWindowListener(this);}public void actionPerformed(ActionEvent e) {if (first ==1)tf.setText("");first=0;Object temp=e.getSource();//退格if (temp== bBack){String s=tf.getText();tf.setText("");for (int i=0;i<s.length()-1;i++){char a=s.charAt(i);tf.setText(tf.getText()+a);}}//清零if (temp==bC){tf.setText("0.");clear=true;first=1;}if (temp==b0){//判断是否单击了符号位if (clear==false)tf.setText("");tf.setText(tf.getText()+"0");}if (temp==b1){if (clear==false)tf.setText("");tf.setText(tf.getText()+"1");clear=true;}if (temp==b2){if (clear==false)tf.setText("");tf.setText(tf.getText()+"2");clear=true;}if (temp==b3){if (clear==false)tf.setText("");tf.setText(tf.getText()+"3");clear=true;}if (temp==b4){if (clear==false)tf.setText("");tf.setText(tf.getText()+"4");clear=true;}if (temp==b5){if (clear==false)tf.setText("");tf.setText(tf.getText()+"5");clear=true;}if (temp==b6){if (clear==false)tf.setText("");tf.setText(tf.getText()+"6");clear=true;}if (temp==b7){if (clear==false)tf.setText("");tf.setText(tf.getText()+"7");clear=true;}if (temp==b8){if (clear==false)tf.setText("");tf.setText(tf.getText()+"8");clear=true;}if (temp==b9){if (clear==false)tf.setText("");tf.setText(tf.getText()+"9");clear=true;}//判断是否含有小数点if (temp == bDot){clicked=true;for (int i=0;i<tf.getText().length();i++)if ('.'==tf.getText().charAt(i)){clicked = false;break;}if (clicked == true){tf.setText(tf.getText()+".");clear=true;}}//bSqrtif(temp == bSqrt){tf.setText( Math.sqrt( Double.parseDouble(tf.getText())) + "" );clear=false;}//bPingFangif(temp == bPingFang ){tf.setText( Math.pow( Double.parseDouble(tf.getText() ), 2 ) + "" );clear=false;}//倒数if(temp == bDaoShu){tf.setText( 1 / Double.parseDouble(tf.getText()) + "" );clear =false;}//Sinif(temp == bSin){tf.setText( Math.sin( Math.toRadians( Double.parseDouble( tf.getText() ) ) ) + "" );clear =false;}//Cosif(temp == bCos){tf.setText( Math.cos( Math.toRadians( Double.parseDouble( tf.getText() ) ) ) + "" );clear =false;}//tanif(temp == bTan){tf.setText( Math.tan( Math.toRadians( Double.parseDouble( tf.getText() ) ) ) + "");clear =false;}//加法运算if (temp==bPlus){previous=Double.parseDouble(tf.getText());fuhao="+";clear=false;//System.out.print("+");}//减法运算if (temp == bMinus){previous=Double.parseDouble(tf.getText());fuhao="-";clear=false;}//乘法运算if (temp == bMulti){previous=Double.parseDouble(tf.getText());fuhao="*";clear=false;}//除法运算bDivif (temp == bDiv){previous=Double.parseDouble(tf.getText());fuhao="/";clear=false;}//求余数if(temp == bPercent){previous=Double.parseDouble( tf.getText());fuhao="%";clear=false;}//等于if (temp==bEqual){try{next = Double.parseDouble(tf.getText());tf.setText("");if (fuhao =="+")tf.setText(previous + next +"");if(fuhao == "-")tf.setText(previous - next +"");if(fuhao == "*")tf.setText(previous * next +"");if(fuhao == "/")tf.setText(previous / next +"");if(fuhao == "%")tf.setText(previous % next +"");clear=false;}catch(Exception ex){tf.setText("请检查输入的数据:" + ex.getMessage()) ;clear=false;}}}public void mouseEntered(MouseEvent e){Object temp= e.getSource();if(temp==bPingFang){//System.out.println( bBack.getBackground() );bPingFang.setBackground(cMoveIn);}if(temp==bSqrt){bSqrt.setBackground(cMoveIn);}if(temp==bPercent){bPercent.setBackground(cMoveIn);}if(temp==bC){bC.setBackground(cMoveIn);}if(temp==bBack){bBack.setBackground(cMoveIn);}if(temp==b7){b7.setBackground(cMoveIn);}if(temp==b8){b8.setBackground(cMoveIn);}if(temp==b9){b9.setBackground(cMoveIn);}if(temp==bDiv){bDiv.setBackground(cMoveIn);}if(temp==bDaoShu){bDaoShu.setBackground(cMoveIn); }if(temp==b4){b4.setBackground(cMoveIn);}if(temp==b5){b5.setBackground(cMoveIn);}if(temp==b6){b6.setBackground(cMoveIn);}if(temp==bMulti){bMulti.setBackground(cMoveIn); }if(temp==bSin){bSin.setBackground(cMoveIn);}if(temp==b1){b1.setBackground(cMoveIn);}if(temp==b2){b2.setBackground(cMoveIn);}if(temp==b3){b3.setBackground(cMoveIn);}if(temp==bMinus){bMinus.setBackground(cMoveIn); }if(temp==bCos){bCos.setBackground(cMoveIn);}if(temp==b0){b0.setBackground(cMoveIn);}if(temp==bDot){bDot.setBackground(cMoveIn);}if(temp==bEqual){bEqual.setBackground(cMoveIn);}if(temp==bPlus){bPlus.setBackground(cMoveIn);}if(temp==bTan){bTan.setBackground(cMoveIn);}}public void mouseExited(MouseEvent e) {Object temp= e.getSource();if(temp==bPingFang){//System.out.println( bBack.getBackground() );bPingFang.setBackground(cMoveOut);}if(temp==bSqrt){bSqrt.setBackground(cMoveOut);}if(temp==bPercent){bPercent.setBackground(cMoveOut);}if(temp==bC){bC.setBackground(cMoveOut);}if(temp==bBack){bBack.setBackground(cMoveOut);}if(temp==b7){b7.setBackground(cMoveOut);}if(temp==b8){b8.setBackground(cMoveOut);}if(temp==b9){b9.setBackground(cMoveOut);}if(temp==bDiv){bDiv.setBackground(cMoveOut);}if(temp==bDaoShu){bDaoShu.setBackground(cMoveOut); }if(temp==b4){b4.setBackground(cMoveOut);}if(temp==b5){b5.setBackground(cMoveOut);}if(temp==b6){b6.setBackground(cMoveOut);}if(temp==bMulti){bMulti.setBackground(cMoveOut); }if(temp==bSin){bSin.setBackground(cMoveOut);}if(temp==b1){b1.setBackground(cMoveOut);}if(temp==b2){b2.setBackground(cMoveOut);}if(temp==b3){b3.setBackground(cMoveOut);}if(temp==bMinus){bMinus.setBackground(cMoveOut); }if(temp==bCos){bCos.setBackground(cMoveOut);}if(temp==b0){b0.setBackground(cMoveOut);}if(temp==bDot){bDot.setBackground(cMoveOut);}if(temp==bEqual){bEqual.setBackground(cMoveOut);}if(temp==bPlus){bPlus.setBackground(cMoveOut);}if(temp==bTan){bTan.setBackground(cMoveOut);}}public static void main(String args[]){Calc frame=new Calc();frame.display();}public void windowClosing(WindowEvent e){System.exit(0);}public void mouseClicked(MouseEvent arg0) {}public void mousePressed(MouseEvent arg0) {}public void mouseReleased(MouseEvent arg0) { }}。
基于java的简易计算器的设计摘要自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了C语言中指针特点,因而变得简单了很多。
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,其具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
本文介绍了用java语言编写一个简易计算器。
实现数学上的加、减、乘、除、乘方、开方、阶乘、正弦、余弦运算等相关运算。
利用这个程序可以方便的进行日常性的小规模运算,小巧简易,是个实用的工具。
关键词:程序设计;简易计算器;java语言THE DESIGN OF SIMPLE CALCULATOR BASED ON JA V AABSTRACTSince the inception of the java language, java language Take irresistible trend soon beca me widespread international popular object-oriented programming language, both with advan ced language features, and less of the C language pointer characteristics, and thus becomes a l ot simpler . Java is a cross-platform application software can write object-oriented programmi ng language, which has excellent versatility, efficiency, platform portability, and security, are widely used in personal PC, data center, gaming consoles, scientific super-computers, mobile phones and the Internet, also has the world's largest developer of professional community. In t he global cloud computing and mobile Internet industry environment, Java and more have sig nificant advantages and broad prospects.This article describes the use java language a simple calculator. Achieve mathematical addition, subtraction, multiplication, division, involution, evolution, factorial, sine, cosine op erations and other related operations. With this program you can easily carry out daily operati ons of small-scale, small simple, is a useful tool.Key words:program design;simple calculator;java language目录1前言 (1)1.1 课程设计背景 (1)1.2 需求环境 (1)1.3 课程设计思路 (1)2课程设计概要 (2)3 计算器详细设计 (3)3.1 计算器界面……….………….........………………………………………. .33.1.1 CAL主类的显示分布 (3)3.1.2计算器显示界面实现代码 (3)3.2 监听各个按钮的类 (5)3.2.1 编写监听类目的 (5)3.2.2 监听类实现代码 (5)3.3 按键响应类 (7)3.3.1 响应类编写的目的 (7)3.2.2 响应类实现代码 (7)3.3 运算处理类 (9)3.3.1 处理方式 . (9)3.2.2 处理类实现代码 (9)4 运行与调试 (12)4.1 进入程序主界面 (12)4.2 加减乘除功能实现 (12)4.3 正余弦、正切功能实现 (13)4.4 阶乘功能实现 (13)4.5 乘方、开方功能实现 (14)5 实验总结 (15)参考文献 (16)附录:源代码 (17)1 前言1.1 课程设计背景日常生活中我们经常会遇到一些小型数据计算的问题,本课程设计就是以此为出发点,设计了这样一个简单的计算器,用以实现基本的数学运算。
姓名:钱宇坤学号:2011435112实验6 图形用户界面设计1.实验目的掌握Java Swing组件的使用方法,理解委托时间处理模型,掌握多种布局方式,掌握窗口菜单和快捷菜单的设计方式,熟悉在组件上绘图的方法,设计具有图形用户界面的、能够响应时间的Java应用程序。
2.实验内容计算器:实现计算器的加、减、乘、除等运算,并处理异常。
3.实验分析声明一个类Caculator并实现ActionListener,实现加、减、乘、除、开平方的功能,并对异常进行处理。
构造函数Caculator()中初始化界面,对控件进行布局,声明两个Jpanel,分别是j1和j2。
j1中添加一个JtextFeild,j2中添加GridLayout 布局,依次添加20个JButton,并分别添加事件监听。
在actionPerformed()函数中实现对相应事件的处理,并对可能出现的异常进行处理(弹出对话框)。
声明MJDialog类,实现一个对父窗体JFrame依赖对话框的功能。
在MJdialog 类中声明要依赖的父窗体JFrame和一个能够显示任意字符串的Jlabel,重写show()方法设置窗体中Jlabel显示的内容。
4.计算器使用(1)+ --- * / 功能:运算数1 +“运算符”+运算数2+“=”(2)sqrt功能:运算数+“sqrt”(3)CE功能:只清除最后一个运算数(4)C功能:清除计算器所有信息(5)+/-功能:对运算数进行取反。
运算数+“+/-”5.实验代码import java.awt.*;import javax.swing.*;import java.awt.event.*;class Calculator implements ActionListener {double c, n;String s1, s2, s3, s4, s5;JFrame f;JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15,b16,b17,b18,b19,b20;JTextField tf1;public Calculator() {f = new JFrame("Calculator");f.setSize(250,250);f.setDefaultCloseOperation(3);//f.setLayout(new GridLayout(6,4));f.setResizable(false);b1 = new JButton("0");//b1.setSize(20,17);b1.addActionListener(this);b2 = new JButton("1");//b2.setSize(20, 17);b2.addActionListener(this);b3 = new JButton("2");//b3.setSize(20, 17);b3.addActionListener(this);b4 = new JButton("3");//b4.setSize(20, 17);b4.addActionListener(this);b5 = new JButton("4");//b5.setSize(20, 17);b5.addActionListener(this);b6 = new JButton("5");//b6.setSize(20, 17);b6.addActionListener(this);b7 = new JButton("6");//b7.setSize(20, 17);b7.addActionListener(this);b8 = new JButton("7");//b8.setSize(20, 17);b8.addActionListener(this);b9 = new JButton("8");b9.setSize(20, 17);b9.addActionListener(this);b10 = new JButton("9");// b10.setSize(20, 17);b10.addActionListener(this);b11 = new JButton("+");//b11.setSize(20, 17);b11.addActionListener(this);b12 = new JButton("-");//b12.setSize(20, 17);b12.addActionListener(this);b13 = new JButton("x");//b13.setSize(20, 17);b13.addActionListener(this);b14 = new JButton("/");//b14.setSize(20, 17);b14.addActionListener(this);b15 = new JButton("=");//b15.setSize(20, 17);b15.addActionListener(this);b16 = new JButton("C");//b16.setSize(20, 17);b16.addActionListener(this);//////////////////////////////////b17 = new JButton("sqrt");//b17.setSize(20,17);b17.addActionListener(this);b18 = new JButton("+/-");b18.setSize(20,17);b18.addActionListener(this);b19 = new JButton(". ");//b19.setSize(20,17);b19.addActionListener(this);b20 = new JButton("CE");//b20.setSize(20,17);b20.addActionListener(this);tf1 = new JTextField(20);JPanel j1=new JPanel();j1.add(tf1);JPanel j2=new JPanel();j2.setLayout(new GridLayout(5,4,4,1)); j2.add(b17);j2.add(b18);j2.add(b20);j2.add(b16);j2.add(b8);j2.add(b9);j2.add(b10);j2.add(b14);j2.add(b5);j2.add(b6);j2.add(b7);j2.add(b13);j2.add(b2);j2.add(b3);j2.add(b4);j2.add(b12);j2.add(b1);j2.add(b19);j2.add(b15);j2.add(b11);f.setLayout(new BorderLayout());f.add(j1,BorderLayout.NORTH);f.add(j2,BorderLayout.CENTER);f.setLocation(500, 300);f.setVisible(true);}public void actionPerformed(ActionEvent e) { if (e.getSource() == b1) {s3 = tf1.getText();s4 = "0";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b2) {s3 = tf1.getText();s4 = "1";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b3) {s3 = tf1.getText();s4 = "2";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b4) {s3 = tf1.getText();s4 = "3";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b5) {s3 = tf1.getText();s4 = "4";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b6) {s3 = tf1.getText();s4 = "5";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b7) { s3 = tf1.getText();s4 = "6";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b8) { s3 = tf1.getText();s4 = "7";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b9) { s3 = tf1.getText();s4 = "8";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b10) { s3 = tf1.getText();s4 = "9";s5 = s3 + s4;tf1.setText(s5);}if (e.getSource() == b11) { s1 = tf1.getText();tf1.setText("");c = 1;}if (e.getSource() == b12) { s1 = tf1.getText();tf1.setText("");c = 2;}if (e.getSource() == b13) { s1 = tf1.getText();tf1.setText("");c = 3;}if (e.getSource() == b14) { s1 = tf1.getText();tf1.setText("");c = 4;}if(e.getSource()==b17){s1=tf1.getText();try {tf1.setText(String.valueOf(Math.sqrt(Double.parseDouble(s1))));} catch ( Exception exception) {// TODO: handle exceptionMJdialog jDialog=new MJdialog(f);jDialog.Show("请先输入纯数字!然后再做sqrt运算!");}}if (e.getSource()==b18){try {tf1.setText(String.valueOf(0-Double.parseDouble(tf1.getText())));} catch (Exception e2) {// TODO: handle exceptionMJdialog jDialog=new MJdialog(f);jDialog.Show("Error!");}}if (e.getSource()==b19){s3 = tf1.getText();s4 = ".";s5 = s3 + s4;tf1.setText(s5);// try {// s1=tf1.getText();// tf1.setText(String.valueOf(Double.parseDouble(s1)));// } catch (Exception e2) {// // TODO: handle exception// MJdialog jDialog=new MJdialog(f);// jDialog.Show("请先输入纯数字!");// }}if(e.getSource()==b20){tf1.setText("");}if (e.getSource() == b15) {s2 = tf1.getText();if (c == 1) {n = Double.parseDouble(s1) + Double.parseDouble(s2);tf1.setText(String.valueOf(n));} else if (c == 2) {n = Double.parseDouble(s1) - Double.parseDouble(s2);tf1.setText(String.valueOf(n));} else if (c == 3) {n = Double.parseDouble(s1) *Double.parseDouble(s2);tf1.setText(String.valueOf(n));} else if (c == 4) {n = Double.parseDouble(s1) / Double.parseDouble(s2);tf1.setText(String.valueOf(n));}}if (e.getSource() == b16) {s1=null;s2=null;tf1.setText("");}}public static void main(String args[]) {Calculator c = new Calculator();}}class MJdialog extends JDialog{JLabel label=null;JFrame frame=null;public MJdialog(JFrame frame){super(frame, "警告!");this.frame=frame;this.setSize(300,80);bel=new JLabel("",JLabel.CENTER);this.getContentPane().add(label);this.setDefaultCloseOperation(3);}void Show(String s){label.setText(s);this.setLocation(frame.getX()+100, frame.getY()+100);this.setVisible(true );}}。