「java写计算器的流程图」java写计算器代码

博主:adminadmin 2022-11-26 15:59:08 74

本篇文章给大家谈谈java写计算器的流程图,以及java写计算器代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用Java编写一个简单的计算器程序

import java.awt.*;

import java.awt.event.*;

public class CalcAppDemo extends Frame{

private TextField t_result;

private Panel p_main; //主面板

private Panel p_num; //数字面板

private Panel p_oper; //操作符面板

private Panel p_show; //显示面板

private Button b_num[]; //数字按钮

private Button b_oper[]; //操作符面板

public CalcAppDemo(String title){

setTitle(title);

t_result = new TextField("0.0", 21);

p_main = new Panel();

p_num = new Panel();

p_oper = new Panel();

p_show = new Panel();

p_main.setLayout(new BorderLayout());

p_num.setLayout(new GridLayout(4, 3, 1, 1));

p_oper.setLayout(new GridLayout(4, 2, 1, 1));

b_num = new Button[12];

for(int i=0; i9; i++)

{

b_num[i] = new Button(new Integer(i+1).toString());

}

b_num[9] = new Button("0");

b_num[10] = new Button("cls");

b_num[11] = new Button(".");

for(int i=0; i12; i++)

{

p_num.add(b_num[i]);

}

b_oper = new Button[8];

b_oper[0] = new Button("+");

b_oper[1] = new Button("-");

b_oper[2] = new Button("*");

b_oper[3] = new Button("/");

b_oper[4] = new Button("pow");

b_oper[5] = new Button("sqrt");

b_oper[6] = new Button("+/-");

b_oper[7] = new Button("=");

for(int i=0; i8; i++) //

{

p_oper.add(b_oper[i]);

}

t_result.setEditable(false);

p_show.add(t_result, BorderLayout.NORTH);

p_main.add(p_show, BorderLayout.NORTH);

p_main.add(p_num, BorderLayout.WEST);

p_main.add(p_oper, BorderLayout.EAST);

this.add(p_main, BorderLayout.CENTER);

setSize(400, 400);

setResizable(false);

pack();

this.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

ButtonListener b1 = new ButtonListener();

for(int i=0; i12; i++)

{

b_num[i].addActionListener(b1);

}

for(int i=0; i8; i++)

{

b_oper[i].addActionListener(b1);

}

}

class ButtonListener implements ActionListener

{

private String lastOp; //存储上一此操作符

private String strVal; //存储数字对应的字符串

private double total; //总数

private double number; //存储新输入的数

private boolean firsttime; //判断是否第一次按下的是操作符按钮

private boolean operatorPressed;//判断是否已经按过操作符按钮

ButtonListener()

{

firsttime = true;

strVal = "";

}

//事件处理器

public void actionPerformed(ActionEvent e)

{

String s = ((Button)e.getSource()).getLabel().trim();

if(Character.isDigit(s.charAt(0)))

{//判断是操作数还是操作符

handleNumber(s);

}

else

{

calculate(s);

}

}

//判断是一元操作符还是二元操作符,并根据操作符类型做计算

void calculate(String op)

{

operatorPressed = true;

if(firsttime! isUnary(op))

{

total = getNumberOnDisplay();

firsttime = false;

}

if(isUnary(op))

{

handleUnaryOp(op);

}

else if(lastOp != null)

{

handleBinaryOp(lastOp);

}

if(! isUnary(op))

{

lastOp = op;

}

}

//判断是否一元操作符

boolean isUnary(String s)

{

return s.equals("=")

||s.equals("cls")||s.equals("sqrt")

||s.equals("+/-")||s.equals(".");

}

//处理一元操作符

void handleUnaryOp(String op)

{

if(op.equals("+/-"))

{//

number = negate(getNumberOnDisplay() + "");

t_result.setText("");

t_result.setText(number + "");

return;

}else if(op.equals("."))

{

handleDecPoint();

return;

}else if(op.equals("sqrt"))

{

number = Math.sqrt(getNumberOnDisplay());

t_result.setText("");

t_result.setText(number + "");

return;

}else if(op.equals("="))

{//

if(lastOp!= null !isUnary(lastOp))

{

handleBinaryOp(lastOp);

}

lastOp = null;

firsttime = true;

return;

}else

{

clear();

}

}

//处理二元运算符

void handleBinaryOp(String op)

{

if(op.equals("+"))

{

total +=number;

}else if(op.equals("-"))

{

total -=number;

}else if(op.equals("*"))

{

total *=number;

}else if(op.equals("/"))

{

try

{

total /=number;

}catch(ArithmeticException ae){}

}else if(op.equals("pow"))

total = Math.pow(total, number);

//t_result.setText("");

lastOp = null;

// strVal = "";

number = 0;

t_result.setText(total + "");

}

//该方法用于处理数字按钮

void handleNumber(String s)

{

if(!operatorPressed)

{

strVal += s;

}else

{

operatorPressed = false;

strVal = s;

}

//

number = new Double(strVal).doubleValue();

t_result.setText("");

t_result.setText(strVal);

}

//该方法用于按下"."按钮

void handleDecPoint()

{

operatorPressed = false;

//

if(strVal.indexOf(".")0)

{

strVal += ".";

}

t_result.setText("");

t_result.setText(strVal);

}

//该方法用于将一个数求反

double negate(String s)

{

operatorPressed = false;

//如果是一个整数,去掉小数点后面的0

if(number == (int)number)

{

s = s.substring(0,s.indexOf("."));

}

//如果无"-"增加在该数的前面

if(s.indexOf("-")0)

{

strVal = "-" + s;

}

else

{

strVal = s.substring(1);

}

return new Double(strVal).doubleValue();

}

//将显示框中的值转换成Double

double getNumberOnDisplay()

{

return new Double(t_result.getText()).doubleValue();

}

//清除屏幕并设置所有的标识

void clear()

{

firsttime = true;

lastOp = null;

strVal = "";

total = 0;

number = 0;

t_result.setText("0");

}

}

public static void main(String[] args) {

CalcAppDemo c = new CalcAppDemo("简单的计算器程序");

c.setVisible(true);

}

}

怎么用Java写一个计算器。下面有图片

//很简单,用脚本引擎类

import java.util.Scanner;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

import javax.script.ScriptException;

public class ScriptEngineDemo

{

public static void main(String args[])

{

ScriptEngine sEngine = new ScriptEngineManager().getEngineByName("js");

Scanner scanner = new Scanner(System.in);

String express = "1+2*3";

System.out.println("请输入算是,按回车结束:");

String script = scanner.nextLine();

try {

Number num1 = (Number) sEngine.eval(express);

System.out.println(num1);

Number num2 = (Number) sEngine.eval(script);

System.out.println(num2);

} catch (ScriptException e) {

e.printStackTrace();

}

scanner.close();

}

}

帮帮忙:Java小计算器代码,及需求分析.流程图.

import java.awt.*;//引入包java.awt中所有的类

import java.awt.event.*;//引入包java.awt.event中所有的类.

public class Calculator extends WindowAdapter implements ActionListener//创建Calculator类,

实现ActionListener接口.

{

private double result=0,data1=0,radixPointDepth=1;//定义变量

private boolean radixPointIndicate=false,resultIndicate=false;

private char prec='+';//创建优先默认字符"+"

private Frame f;//创建窗口

private TextField tf;//创建文本框

private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;//创建按钮

private Panel p;//创建/面板容器

static public void main(String args[])//main方法,创建calGUI(图形用户界面),完成初试化

{

//构造器

Calculator de=new Calculator();//创建构造方法

de.go();

}

public void go()

{

f=new Frame("计算器");

p=new Panel();//运算界面p

p.setLayout(new GridLayout(4,4)); // 设置p的布局为GridLayout,四行四列

tf=new TextField(30);

//实例化按钮

b1=new Button("7");

b2=new Button("8");

b3=new Button("9");

b4=new Button("+");

b5=new Button("4");

b6=new Button("5");

b7=new Button("6");

b8=new Button("-");

b9=new Button("1");

b10=new Button("2");

b11=new Button("3");

b12=new Button("*");

b13=new Button("0");

b14=new Button(".");

b15=new Button("=");

b16=new Button("/");

b17=new Button("清零");

f.add(tf,"North"); //把文本区域添加到框架的上方

f.add(p,"Center"); //把面版添加到框架的中间

f.add(b17,"South"); //把按钮(清零)添加到框架的下方

//把按钮添加到面版上

p.add(b1);

p.add(b2);

p.add(b3);

p.add(b4);

p.add(b5);

p.add(b6);

p.add(b7);

p.add(b8);

p.add(b9);

p.add(b10);

p.add(b11);

p.add(b12);

p.add(b13);

p.add(b14);

p.add(b15);

p.add(b16);

//为按钮添加监听

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);

b10.addActionListener(this);

b11.addActionListener(this);

b12.addActionListener(this);

b13.addActionListener(this);

b14.addActionListener(this);

b15.addActionListener(this);

b16.addActionListener(this);

b17.addActionListener(this);

f.addWindowListener(this); //为框架添加监听

f.setSize(300,190);//设置框架的大小

f.setVisible(true);//设置框架为可见

}

//监听程序

public void actionPerformed(ActionEvent e)

{

String s;

s=e.getActionCommand();

//SWITCH开关

switch(s.charAt(0))

{

case '0': case '1': case '2': case '3': case '4': case '5': case '6': case

'7': case '8': case '9'://按了“0-9”,就执行下面

if(resultIndicate)

{

result=0;

data1=0;

prec='+';

}

Integer Int1=new Integer(s);

if(radixPointIndicate)

{

radixPointDepth=radixPointDepth/10;

data1=data1+(Int1.intValue())*radixPointDepth;

}

else

{

data1=data1*10+(Int1.intValue());

}

Double displayNumber=new Double(data1);

tf.setText(displayNumber.toString());

resultIndicate=false;

break;

case '+': case '-':case '*':case '/':case '='://按了“+、-、*、/”,就

执行下面

if(s.charAt(0)!='='resultIndicate)

{

prec=s.charAt(0);

resultIndicate=false;

}

else

{

//用SWITCH开关运算出执行了“+、-、*、/”的结果

switch(prec)

{

case '+':

result=result+data1;

break;

case '-':

result=result-data1;

break;

case '*':

result=result*data1;

break;

case '/':

result=result/data1;

break;

}

}

radixPointIndicate=false;

radixPointDepth=1;

displayNumber=new Double(result);

tf.setText(displayNumber.toString());

//监听是否按了“=”

if(s.charAt(0)!='=')

{

data1=0;

prec=s.charAt(0);

}

else

{

resultIndicate=true;

}

break;

case '.':

radixPointIndicate=true;

break;

}

//监听是否按了为“清零”,是则对各数据清零

if(s.equals("清零"))

{

result=0;

data1=0;

radixPointDepth=1;

tf.setText("");

}

}

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

}

怎么用JAVA编程编写一个计算器?

打开IED:打开自己java编程的软件,采用的是eclipse软件。

建立java工程。

编写类。

编写类的详细步骤

1.类的基本结构:

由于这里用到了界面,所以要进行窗口界面的编程,按钮事件的处理,和计算处理界面;

package MyCaculator;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MyCaculator extends JFrame {

private int add=1,sub=2,mul=3,div=4;

private int op=0;

boolean ifOp;

private String output="0";

private Button[] jba=new Button[]{new Button("7"),new Button("8"),

new Button("9"),new Button("+"),

new Button("4"),new Button("5"),new Button("6"),new Button("-"),

new Button("1"),new Button("2"),new Button("3"),new Button("*"),

new Button("0"),new Button("."),new Button("="),new Button("/")};

private JPanel jpt=new JPanel();

private JPanel jpb=new JPanel();

private JTextField jtf=new JTextField("");

private MyCaculator(){

}

private void operate(String x){

}

public String add(String x){

return output;

}

public String subtract(String x){

return output;

}

public String multiply(String x){

return output;

}

public String divide(String x){

return output;

}

public String Equals(String x){

return output;

}

public void opClean(){

}

class setOperate_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

}

}

class setLabel_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

}

}

public static void main(String[] args) {

}

}

2.建立构造方法:

所谓构造方法就是,对自己的主类进行初始化,代码如下:

private MyCaculator(){

jpt.setLayout(new BorderLayout());

jpt.add(jtf);

this.add(jpt,BorderLayout.NORTH);

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

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

jpb.add(jba[i]);

if(i==3||i==7||i==11||i==15||i==14)

jba[i].addActionListener(new setOperate_Act());

else

jba[i].addActionListener(new setLabel_Act());

}

this.add(jpb,BorderLayout.CENTER);

this.setSize(250, 200);

this.setResizable(false);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

3.建立数据计算方法

这里的数据计算方法有6个,一个是主方法其他几个是加减乘除的处理方法,代码如下:

private void operate(String x){

double x1=Double.valueOf(x);

double y=Double.valueOf(output);

switch(op){

case 0:output=x;break;

case 1:output=String.valueOf(y+x1);break;

case 2:output =String.valueOf(y-x1);break;

case 3:output =String.valueOf(y*x1);break;

case 4:

if(x1!=0) output=String.valueOf(y/x1);

else output="不能为0";

break;

}

}

public String add(String x){

operate(x);

op=add;

return output;

}

public String subtract(String x){

operate(x);

op=sub;

return output;

}

public String multiply(String x){

operate(x);

op=mul;

return output;

}

public String divide(String x){

operate(x);

op=div;

return output;

}

public String Equals(String x){

operate(x);

op=0;

return output;

}

public void opClean(){

op=0;

output ="0";

}

4.事件处理方法

这里的时间处理方法,没有建立一个整体的方法,二是在为了便于处理的方法,将按钮事件分成两个部分,并采用两个子类来实现,这两个类时内部类要写在主类内部的,代码如下:

class setOperate_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

if(e.getSource()==jba[3]){

jtf.setText(add(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[7]){

jtf.setText(subtract(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[11]){

jtf.setText(multiply(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[15]){

jtf.setText(divide(jtf.getText()));

ifOp=true;

}

else if(e.getSource()==jba[14]){

jtf.setText(Equals(jtf.getText()));

ifOp=true;

}

}

}

class setLabel_Act implements ActionListener{

public void actionPerformed(ActionEvent e) {

Button tempb=(Button)e.getSource();

if(ifOp){

jtf.setText(tempb.getLabel());

ifOp=false;

}else {

jtf.setText(jtf.getText()+tempb.getLabel());

}

}

}

5.建立main方法:

要想实现我们的代码,我们需在main方法中,实例化我们的对象。

public static void main(String[] args) {

new MyCaculator();

}

Java编写计算器的流程图

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Calculator implements ActionListener

{

String s="",s1;

double d1,d2;

JFrame jf = new JFrame("小计算器by Graduate") ;

JTextField tf = new JTextField();

public void init()//实现计算器界面

{

Container c=jf.getContentPane();

tf.setHorizontalAlignment(JTextField.RIGHT);//文本框

c.add(tf,"North");

JPanel pn3 = new JPanel(new BorderLayout());

c.add(pn3,"Center");

JPanel pn2 = new JPanel();//功能键界面(清除键和关闭键)

pn2.setLayout(new BorderLayout());

JPanel pn1 = new JPanel();//运算界面

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

pn3.add(pn2,"North");

pn3.add(pn1);

//设置按钮

JButton b = new JButton("CLEAR");

b.setToolTipText("请按清除键!");//设置清零键

b.setForeground(Color.RED);//设置字体颜色

b.setBackground(Color.YELLOW);//设置背景色

b.addActionListener(this);

pn2.add(b,"Center");

b = new JButton("OFF");

b.setToolTipText("请按退出键!");//设置off键,点击退出应用程序b.addActionListener(this);

b.setForeground(Color.RED);//字体颜色

b.setBackground(Color.ORANGE);//背景色

pn2.add(b,"East");

b = new JButton("1");//add butten 1

b.addActionListener(this);

pn1.add(b);

b = new JButton("2");//add butten 2

b.addActionListener(this);

pn1.add(b);

b = new JButton("3");//add butten 3

b.addActionListener(this);

pn1.add(b);

b = new JButton("+");//add butten +

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("4");//add butten 4

b.addActionListener(this);

pn1.add(b);

b = new JButton("5");//add butten 5

b.addActionListener(this);

pn1.add(b);

b = new JButton("6");//add button 6

b.addActionListener(this);

pn1.add(b);

b = new JButton("-");//add button -

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("7");//add button 7

b.addActionListener(this);

pn1.add(b);

b = new JButton("8");//add button 8

b.addActionListener(this);

pn1.add(b);

b = new JButton("9");//add button 9

b.addActionListener(this);

pn1.add(b);

b = new JButton("*");//add button *

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("0");//add button 0

b.addActionListener(this);

pn1.add(b);

b = new JButton(".");//add button .

b.addActionListener(this);

pn1.add(b);

b = new JButton("=");//add button =

b.setForeground(Color.RED);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

b = new JButton("\\");//add button \

b.setForeground(Color.BLUE);//设置字体颜色

b.addActionListener(this);

pn1.add(b);

jf.setSize(300,300);//设置大小

jf.setVisible(true);//设置为可视

}

//处理按钮按下时的动作,进行相应的处理

public void actionPerformed(ActionEvent e)

{

String command = e.getActionCommand();

tf.setText(tf.getText()+command);

if(command.equals("CLEAR")) //清零键 按下时返回初始状态

{

s1=null;

s="";

tf.setText("");//记录输入值的变量清空

}

else if(command.equals("OFF")) System.exit(0);//off键 关闭应用程序

else if(!command.equals("*")!command.equals("\\")

!command.equals("+")!command.equals("-")

!command.equals("="))//判断输入是否为数字

{

if(s1==null)//判断输入是否为第一个

s1 = command;

else s1+=command;

d1 = new Double(s1).doubleValue();//字符串型转换为双精度型,还原输入数字

try

{

if(s.equals("+")) d1 = d1+d2;//加法运算

else if(s.equals("-")) d1 = d2-d1;//减法运算

else if(s.equals("*")) d1 = d1*d2;//乘法运算

else if(s.equals("\\"))d1 = d2/d1;//除法运算

}

catch(Exception ex)

{

tf.setText("Error");//错误显示"Error"

System.out.println(ex.getMessage());

}

}

else if(!command.equals("=")) //判断输入是否为+ - * \

{

s = command;

s1 = null;

d2 = d1;

}

else//输入=时,显示运算结果

{

tf.setText(tf.getText()+d1);

}

}

public static void main(String [] args)

{

new Calculator().init();

}

}

Java入门写一个计算器的程序,要求如图

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[10];

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

numberButton[i] = new NumberButton(i);

numberButton[i].addActionListener(this);

}

operatorButton = new OperatorButton[4];

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

operatorButton[i] = new OperatorButton(operator[i]);

operatorButton[i].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[1]);

panel.add(numberButton[2]);

panel.add(numberButton[3]);

panel.add(backspace);

panel.add(clear);

panel.add(numberButton[4]);

panel.add(numberButton[5]);

panel.add(numberButton[6]);

panel.add(operatorButton[0]);

panel.add(operatorButton[2]);

panel.add(numberButton[7]);

panel.add(numberButton[8]);

panel.add(numberButton[9]);

panel.add(operatorButton[1]);

panel.add(operatorButton[3]);

panel.add(numberButton[0]);

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写计算器代码、java写计算器的流程图的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。