如何用JAVA语言编写计算器小程序?

如何用JAVA语言编写计算器小程序?,第1张

具体代码如下:

import javax.swing.*

import java.awt.event.*

import java.awt.*

public class Calculator  extends JFrame implements ActionListener  {

private JFrame jf

private JButton[] allButtons

private JButton clearButton

private JTextField jtf

public Calculator() {

//对槐纳乱图形组件实例化

jf=new JFrame("任静的计算器1.0:JAVA版")

jf.addWindowListener(new WindowAdapter(){

public void windowClosing(){

System.exit(0)

}

})

allButtons=new JButton[16]

clearButton=new JButton("清除")

jtf=new JTextField(25)

jtf.setEditable(false)

String str="123+456-789*0.=/"

for(int i=0i<allButtons.lengthi++){

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

}

}

public void init(){

//完成布局

jf.setLayout(new BorderLayout())

JPanel northPanel=new JPanel()

JPanel centerPanel=new JPanel()

JPanel southPanel=new JPanel()

northPanel.setLayout(new FlowLayout())

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

southPanel.setLayout(new FlowLayout())

northPanel.add(jtf)

for(int i=0i<16i++){

centerPanel.add(allButtons[i])

}

southPanel.add(clearButton)

jf.add(northPanel,BorderLayout.NORTH)

jf.add(centerPanel,BorderLayout.CENTER)

jf.add(southPanel,BorderLayout.SOUTH)

addEventHandler()

}

//添加事件监听

public void addEventHandler(){

jtf.addActionListener(this)

for(int i=0i<allButtons.lengthi++){

allButtons[i].addActionListener(this)

}

clearButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Calculator.this.jtf.setText("")

}

})

}

//事件处理

public void actionPerformed(ActionEvent e) {

//在这里完成事件处理  使计算器可以运行

String action=e.getActionCommand()

if(action=="+"||action=="-"||action=="*"||action=="铅档/"){

}

}

public void setFontAndColor(){

Font f=new Font("宋茄斗体",Font.BOLD,24)

jtf.setFont(f)

jtf.setBackground(new Color(0x8f,0xa0,0xfb))

for(int i=0i<16i++){

allButtons[i].setFont(f)

allButtons[i].setForeground(Color.RED)

}

}

public void showMe(){

init()

setFontAndColor()

jf.pack()

jf.setVisible(true)

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

}

public static void main(String[] args){

new Calculator().showMe()

}

}

下面两个可以么,是我做实验答辩时用到的!

import java.awt.*//AWT核心包

import java.awt.event.*//提供事件类和监听器

public class Counter extends Frame implements ActionListener

{

TextField t=new TextField("")//文本框

Panel p1=new Panel()//new一个panel,用于存放数字键和符号键。

Panel p2=new Panel()//new一个panel,用于存放开方、平方、和清除键。

Button[] b=new Button[10]//实例化Button对象

Button bAdd=new Button("加")

Button bSub=new Button("减")

Button bMul=new Button("乘以")

Button bPoint=new Button(".")

Button bDiv=new Button("除以")

Button bEqual=new Button("等於")

Button bSqrt=new Button("开方")

Button bPow=new Button("平方")

Button bNull=new Button("清除")

String str1=""//str1和str2存放两个输入的数

String str2=""

String operator=null //存放加减乘除以及开平方的符号

boolean first=true //检验输入的是否为第一个数

int countOper=0 //累计输入符号的个数,连加连减等 *** 作中会用到

double result=0.0 //暂存结果

double num1=0.0,num2=0.0 //两个输入的数做运算时转化为double存放

boolean error=false //检验除数是否州型吵为0

//构造方租源法

public Counter()

{

Frame s=new Frame("计算器")//创建Frame

for(int i=0i<10i++)//利用for循环将数字键添加进p1中

{

b[i]=new Button(String.valueOf(i))

p1.add(b[i])

b[i].setActionCommand("number")

b[i].setForeground(new Color(150,20,20))

b[i].addActionListener(this)//调用addActionListener()方法注册事件监听器

}

p1.add(bPoint)

bPoint.setActionCommand("number")

p1.add(bAdd)//数字键,符号键放置在panel的p1中

p1.add(bSub)

p1.add(bMul)

p1.add(bDiv)

p1.add(bEqual)

p2.add(bSqrt)//开方键,平方键,清除键放置在panel的p2中

p2.add(bPow)

p2.add(bNull)

bAdd.setActionCommand("oper")

bSub.setActionCommand("oper")

bMul.setActionCommand("oper")

bDiv.setActionCommand("oper")

bAdd.setForeground(Color.red)//为组键设计颜册侍色

bSub.setForeground(Color.red)

bMul.setForeground(Color.red)

bDiv.setForeground(Color.red)

bPoint.setForeground(Color.black)

bEqual.setForeground(Color.red)

bSqrt.setForeground(Color.blue)

bPow.setForeground(Color.blue)

bNull.setForeground(Color.blue)

bAdd.addActionListener(this)//调用addActionListener()方法注册事件监听器

bSub.addActionListener(this)

bMul.addActionListener(this)

bDiv.addActionListener(this)

bPoint.addActionListener(this)

bEqual.addActionListener(this)

bSqrt.addActionListener(this)

bPow.addActionListener(this)

bNull.addActionListener(this)

p1.setLayout(new GridLayout(4,4,5,5))//网格布局管理器,把容器根据行数和列数分成同样大小的单元,

//每个单元可容纳一个组件,并且此组件会填满网格单元,不能控

//制其占据网格的大小。4、4为网格的行、列数。5、5为组建之间的

//间距

p2.setLayout(new FlowLayout())//用FlowLayout布局管理器将组建默认剧中排放,默认间隙为5个像素

add(t,"North") //frame的north放置输入框,panel放置在center和south

add(p1,"Center")//将p1添加到Center中

add(p2,"South")//将p2添加到South中

setLocation(400,200)//设计按钮尺寸

setSize(200,200)//设计窗口尺寸

setBackground(new Color(20,200,10))//设置Frame的背景,默认为白色

setVisible(true)//设置Frame设置为可见

addWindowListener(new WindowAdapter(){ //关闭窗口功能

public void windowClosing(WindowEvent e)

{

System.exit(0)

}

})

}

//实现接口ActionListener

public void actionPerformed(ActionEvent e)

{

Button temp=(Button)e.getSource()

if(e.getActionCommand().equals("number"))

{

if(first)

{

str1=str1+temp.getLabel()

t.setText(str1)//将输入的str1显示在文本框中

}

else

{

str2=str2+temp.getLabel()

t.setText(str2)//将输入的str2显示在文本框中

}

}

else if(e.getActionCommand().equals("oper"))

{

if(str1=="")//如果还没有输入数就点击运算符执行if

{

countOper=0//若此,则将计数清零

first=true

}

else

{

countOper++//计算输入符号的个数

if(countOper>1)//若输入的符号个数多余一个,则可以进行计算

{

getResult()

}

operator=temp.getLabel()//存放加减乘除以及开方、平方的符号

first=false

}

}

else if(e.getActionCommand().equals("开方"))

{

double d=Math.sqrt(Double.parseDouble(str1))

str1=String.valueOf(d)//将计算出来的结果再次传给str1,为连计算准备

t.setText(String.valueOf(d))//将计算出来的结果传至文本框中

first=false//置为false,即已输入第一个数

}

else if(e.getActionCommand().equals("平方"))

{

double f=Math.pow(Double.parseDouble(str1),2)

str1=String.valueOf(f)

t.setText(String.valueOf(f))

first=false

}

else if(e.getActionCommand().equals("清除"))

{

str1=""//清空

str2=""

t.setText("")//将文本框清空

countOper=0//将按键计数器清零

first=true

error=false

}

else if(e.getActionCommand().equals("等於"))

{

if((str1=="")||(str2=="")) //两个数没有输全就点击等号,执行if

{

countOper=0//将按键计数器清零

first=true

}

else

{

getResult()

countOper=0

}

}

}

//运算结果的方法

public void getResult()

{

num1=Double.parseDouble(str1)

num2=Double.parseDouble(str2)

if(operator.equals("加"))

{

result=num1+num2

}

else if(operator.equals("减"))

{

result=num1-num2

}

else if(operator.equals("乘以"))

{

result=num1*num2

}

else if(operator.equals("除以"))

{

if(num2==0.0)//除数为0的处理方法

{

error=true

}

else

{

result=num1/num2

}

}

if(error)

{

t.setText("error")

}

else

{

t.setText(String.valueOf(result))

str1=String.valueOf(result) //运算后把结果放入str1中,str2清空,为连加连减等 *** 作做准备

str2=""

}

}

//主方法

public static void main(String[] args)

{

new Counter()//创建一个对象"计算器"

}

}

import java.awt.*

import java.awt.event.*

import javax.swing.*

class CalculatorPanel extends JPanel

implements ActionListener

{ public CalculatorPanel()

{ setLayout(new BorderLayout())

display = new JTextField("0")

display.setEditable(false)

add(display, "North")

JPanel p = new JPanel()

p.setLayout(new GridLayout(4, 4))

String buttons = "789/456*123-0.=+"

for (int i = 0 i < buttons.length() i++)

addButton(p, buttons.substring(i, i + 1))

add(p, "Center")

}

private void addButton(Container c, String s)

{ JButton b = new JButton(s)

c.add(b)

b.addActionListener(this)

}

public void actionPerformed(ActionEvent evt)

{ String s = evt.getActionCommand()

if ('0' <= s.charAt(0) && s.charAt(0) <= '9'

|| s.equals("."))

{ if (start) display.setText(s)

else display.setText(display.getText() + s)

start = false

}

else

{ if (start)

{ if (s.equals("-"))

else op = s

}

else

{ calculate(Double.parseDouble(display.getText()))

op = s

start = true

}

}

}

public void calculate(double n)

{ if (op.equals("+")) arg += n

else if (op.equals("-")) arg -= n

else if (op.equals("*")) arg *= n

else if (op.equals("/")) arg /= n

else if (op.equals("=")) arg = n

display.setText("" + arg)

}

private JTextField display

private double arg = 0

private String op = "="

private boolean start = true

}

public class CalculatorApplet extends JApplet

{ public void init()

{ Container contentPane = getContentPane()

contentPane.add(new CalculatorPanel())

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12456855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存