首页编程java编程java计算器代码,java实现简单计算器

java计算器代码,java实现简单计算器

编程之家2026-05-26628次浏览

老铁们,大家好,相信还有很多朋友对于java计算器代码和java实现简单计算器的相关问题不太懂,没关系,今天就由我来为大家分享分享java计算器代码以及java实现简单计算器的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java计算器代码,java实现简单计算器

java如何编写计算器代码

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Calculator extends JFrame implements ActionListener

{

private boolean dotExist, operated, equaled;//帮助运算的布尔变量

java计算器代码,java实现简单计算器

private double storedNumber;//目前的结果

private char lastOperator;//表示上一运算符

private JTextField operation;//结果栏

private JButton dot, plus, minus, multi, div, sqrt, equal, changePN, clear;//运算符

private JButton[] numbers;//数字

//构造者

java计算器代码,java实现简单计算器

public Calculator()

{

setTitle("Calculator");

//初始化变量

dotExist= false;//表示当前的数是否有小数点

operated= false;//表示任意运算符是否被按下

equaled= false;//表示等号是否被按下

storedNumber= 0;

lastOperator='?';

//初始化窗口变量

operation= new JTextField("0");

operation.setEditable(false);

numbers= new JButton[10];

for(int i= 0; i< 10; i++)

numbers[i]= new JButton(""+ i);

dot= new JButton(".");

plus= new JButton("+");

minus= new JButton("-");

multi= new JButton("*");

div= new JButton("/");

sqrt= new JButton("√");

equal= new JButton("=");

changePN= new JButton("±");

clear= new JButton("AC");

//将窗口物体放入窗口

GridBagLayout layout= new GridBagLayout();

getContentPane().setLayout(layout);

addComponent(layout, operation, 0, 0, 4, 1);

addComponent(layout, numbers[1], 1, 0, 1, 1);

addComponent(layout, numbers[2], 1, 1, 1, 1);

addComponent(layout, numbers[3], 1, 2, 1, 1);

addComponent(layout, numbers[4], 2, 0, 1, 1);

addComponent(layout, numbers[5], 2, 1, 1, 1);

addComponent(layout, numbers[6], 2, 2, 1, 1);

addComponent(layout, numbers[7], 3, 0, 1, 1);

addComponent(layout, numbers[8], 3, 1, 1, 1);

addComponent(layout, numbers[9], 3, 2, 1, 1);

addComponent(layout, dot, 4, 0, 1, 1);

addComponent(layout, numbers[0], 4, 1, 1, 1);

addComponent(layout, sqrt, 4, 2, 1, 1);

addComponent(layout, plus, 1, 3, 1, 1);

addComponent(layout, minus, 2, 3, 1, 1);

addComponent(layout, multi, 3, 3, 1, 1);

addComponent(layout, div, 4, 3, 1, 1);

addComponent(layout, equal, 5, 0, 2, 1);

addComponent(layout, changePN, 5, 2, 1, 1);

addComponent(layout, clear, 5, 3, 1, 1);

}

//对按钮进行反应的方法

public void actionPerformed(ActionEvent e)

{

JButton btn=(JButton)e.getSource();

if(btn== clear)

{

operation.setText("0");

dotExist= false;

storedNumber= 0;

lastOperator='?';

}

else if(btn== equal)

{

operate('=');

equaled= true;

}

else if(btn== plus)

{

operate('+');

equaled= false;

}

else if(btn== minus)

{

operate('-');

equaled= false;

}

else if(btn== multi)

{

operate('*');

equaled= false;

}

else if(btn== div)

{

operate('/');

equaled= false;

}

else if(btn== changePN)

{

operate('p');

operate('=');

equaled= true;

}

else if(btn== sqrt)

{

operate('s');

operate('=');

equaled= true;

}

else

{

if(equaled)

storedNumber= 0;

for(int i= 0; i< 10; i++)

if(btn== numbers[i])

{

if(operation.getText().equals("0"))

operation.setText(""+ i);

else if(! operated)

operation.setText(operation.getText()+ i);

else

{

operation.setText(""+ i);

operated= false;

}

}

if(btn== dot&&! dotExist)

{

operation.setText(operation.getText()+".");

dotExist= true;

}

}

}

//进行运算的方法

private void operate(char operator)

{

double currentNumber= Double.valueOf(operation.getText()).doubleValue();

if(lastOperator=='?')

storedNumber= currentNumber;

else if(lastOperator=='+')

storedNumber+= currentNumber;

else if(lastOperator=='-')

storedNumber-= currentNumber;

else if(lastOperator=='*')

storedNumber*= currentNumber;

else if(lastOperator=='/')

storedNumber/= currentNumber;

else if(lastOperator=='p')

storedNumber*=-1;

else if(lastOperator=='s')

storedNumber= Math.sqrt(currentNumber);

else if(lastOperator=='='&& equaled)

storedNumber= currentNumber;

operation.setText(""+ storedNumber);

operated= true;

lastOperator= operator;

}

//快捷使用GridBagLayout的方法

private void addComponent(GridBagLayout layout, Component component, int row, int col, int width, int height)

{

GridBagConstraints constraints= new GridBagConstraints();

constraints.fill= GridBagConstraints.BOTH;

constraints.insets= new Insets(10, 2, 10, 2);

constraints.weightx= 100;

constraints.weighty= 100;

constraints.gridx= col;

constraints.gridy= row;

constraints.gridwidth= width;

constraints.gridheight= height;

layout.setConstraints(component, constraints);

if(component instanceof JButton)

((JButton)component).addActionListener(this);

getContentPane().add(component);

}

//主方法初始化并显示窗口

public static void main(String[] args)

{

Calculator calc= new Calculator();

calc.setSize(290, 400);

calc.setVisible(true);

}

}

如果你想加sin cos tan的话就建它们的按钮在actionPerformed方法中的if-else语句中加else if(btn== sin){operate('S');operate('=');equaled= true;}然后在operate方法加对应的语句就行了.记忆M+, M-没时间搞这个应该比较简单容易明白吧.

JAVA简单咋做,计算器代码

简单写了下,代码如下请参照:

/**

*计算器类

*

*@authorAdministrator

*

*/

publicclassCalculatorextendsJFrameimplementsActionListener{

privatestaticfinallongserialVersionUID=3868243398506940702L;

//文本框

privateJTextFieldresult;

//按钮数组

privateJButton[]buttons;

//按钮文本

privatefinalString[]characters={"7","8","9","/","4","5","6",

"*","1","2","3","-","0",".","=","+"};

//是否为第一个输入的数字

privatebooleanisFirstDigit=true;

//运算结果

privatedoubleresultNum=0.0;

//运算符

privateStringoperator="=";

publicCalculator(Stringtitle){

//设置标题栏

super(title);

//初始化各组件

init();

//注册各组件监听器

registerListener();

//显示窗体

setVisible(true);

}

/**

*初始化各组件

*/

privatevoidinit(){

//常用属性初始化

setSize(220,200);

setResizable(false);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

/*文本框对象初始化*/

result=newJTextField("0");

//文本右对齐

result.setHorizontalAlignment(JTextField.RIGHT);

//设置是否可编辑

result.setEditable(false);

/*按钮初始化*/

buttons=newJButton[characters.length];

for(inti=0;i<buttons.length;i++){

buttons[i]=newJButton(characters[i]);

buttons[i].setFocusable(false);//不允许按钮定位焦点

}

/*将文本框与按钮添加到窗体中*/

add(result,BorderLayout.NORTH);

JPanelpnl=newJPanel(newGridLayout(4,4,5,5));

for(JButtonjButton:buttons){

pnl.add(jButton);

}

add(pnl);

this.getContentPane().setFocusable(true);

}

/**

*注册监听器

*/

privatevoidregisterListener(){

for(JButtonjButton:buttons){

jButton.addActionListener(this);

}

//注册键盘事件

this.getContentPane().addKeyListener(newKeyAdapter(){

@Override

publicvoidkeyPressed(KeyEvente){

Stringtext=String.valueOf(e.getKeyChar());

if(Character.isDigit(text.charAt(0))||".".equals(text)){//数字或小数点

handleNumber(text);

}elseif("+-*/=".indexOf(text)!=-1){//运算符

handleOperator(text);

}elseif(e.getKeyCode()==8){//退格键

Stringtmp=result.getText().trim();

if(tmp.length()==1){

result.setText("0");

isFirstDigit=true;

}else{

result.setText(tmp.substring(0,tmp.length()-1));

}

}

}

});

}

@Override

publicvoidactionPerformed(ActionEvente){

JButtonbtn=(JButton)e.getSource();

Stringtext=btn.getText().trim();

if(Character.isDigit(text.charAt(0))||".".equals(text)){//处理数字和小数点

handleNumber(text);

}else{//处理运算符

handleOperator(text);

}

}

/**

*处理数字和小数点

*

*@paramtext

*/

privatevoidhandleNumber(Stringtext){

if(isFirstDigit){//第一次输入

if(".".equals(text)){

this.result.setText("0.");

}else{

this.result.setText(text);

}

}elseif("0".equals(text)&&"0".equals(this.result.getText())){

isFirstDigit=true;

return;

}elseif(".".equals(text)&&this.result.getText().indexOf(".")==-1){

this.result.setText(this.result.getText()+".");

}elseif(!".".equals(text)){

this.result.setText(this.result.getText()+text);

}

isFirstDigit=false;

}

/**

*处理运算符

*

*@paramtext

*/

privatevoidhandleOperator(Stringtext){

switch(operator){//处理各项运算适用于JDK1.7版本的

case"+":

resultNum+=Double.parseDouble(this.result.getText());

break;

case"-":

resultNum-=Double.parseDouble(this.result.getText());

break;

case"*":

resultNum*=Double.parseDouble(this.result.getText());

break;

case"/":

resultNum/=Double.parseDouble(this.result.getText());

break;

case"=":

resultNum=Double.parseDouble(this.result.getText());

break;

}

//将文本框的值修改为运算结果

this.result.setText(String.valueOf(resultNum));

//将点击的运算符放入operator保存

operator=text;

//下一个数字第一次点击

isFirstDigit=true;

}

publicstaticvoidmain(String[]args){

newCalculator("MyCalculator");

}

}运行结果如下:

求JAVA计算器源代码!!!

class Calculator extends WindowAdapter implements ActionListener//创建Calculator类,实现ActionListener接口.

{

//result代表上一次运算结果;data1代表当前文本框内显示的数,radixPointDepth代表小数位数

private double result=0,data1=0,radixPointDepth=3;

//resultIndicate代表是否敲击了等号,要求结果

//radixPointIndicate代表是否敲击了小数点

private boolean radixPointIndicate=false,resultIndicate=false;

private char prec='+';//代表当前运算符

private JFrame 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;//创建/面板容器

public void init()

{

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

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);//设置框架为可见

}

//监听程序,监听actionEvent事件

public void actionPerformed(ActionEvent e)

{

String s;

s=e.getActionCommand();//s存放敲击的命令字符串

//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;//只要敲击了数字键,就代表新的结果还没有算出来,所以为false

break;

case'+':

case'-':

case'*':

case'/':

case'='://按了“+、-、*、/”,执行下面

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

//如果敲击+、-、*、/,并且已经计算过结果,则取新的操作符,所以为false;代表连续运算

//prec存放新敲击的运算符

{

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清空

{

data1=0;

prec=s.charAt(0);

}

else

{

resultIndicate=true;//resultIndicate只有当敲击了等号,才为true,否则为false

}

break;

case'.':

radixPointIndicate=true;

break;

}

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

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

{

result=0;

data1=0;

radixPointDepth=1;

tf.setText("");

}

}

好了,文章到此结束,希望可以帮助到大家。

网页制作成品模板网站(网页模板免费下载)c语言编程软件官方下载 c++用什么软件编程