如何用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()

}

}

package counter

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class Counter implements ActionListener {

JFrame counter = null

Container cou = null

JTextField txt = null

JPanel pan = null

JButton [] btn = null

JLabel lblbrand = null,lbltype = null

String sign = "",sign1 = "0",sign2 = "",sign3 = ""

char operator = ' ', operator1 = '+'

int i = 0

double resault = 0

int b = 0

public Counter() {

counter = new JFrame("计算器")

cou = counter.getContentPane()

cou.setLayout(null)

lblbrand = new JLabel("大象牌")

lblbrand.setForeground(Color.BLUE)

lblbrand.setBounds(15,8,70,20)

cou.add(lblbrand)

lbltype = new JLabel("x-14250")

lbltype.setForeground(Color.GREEN)

lbltype.setBounds(265,8,70,20)

cou.add(lbltype)

txt = new JTextField("0.")

txt.setCaretPosition(2)

txt.setHorizontalAlignment(JTextField.TRAILING)

cou.add(txt)

txt.setBounds(15,28,300,30)

pan = new JPanel(new GridLayout(5,4,10,10))

pan.setBounds(15,68,300,160)

btn = new JButton[20]

String [] btnname = {"Off","Back","C","Exit","7","8","9","+","4","5",

"6","-","1","2","3","*","0",".","=","/"}

for(int i = 0i <20i++)

{

btn[i] = new JButton(btnname[i])

pan.add(btn[i])

btn[i].addActionListener(this)

}

btn[7].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

btn[11].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

btn[15].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

btn[17].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

btn[18].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

btn[19].setFont(new java.awt.Font("宋体", Font.PLAIN, 16))

cou.add(pan)

counter.setSize(335,280)

counter.setVisible(true)

}

public void actionPerformed(ActionEvent e) {

operator = e.getActionCommand().charAt(0)

annal()

if(!sign.equals(""))

opinion(sign)

else

showresault(sign1)

if(i % 2 != 0)

txt.setText("")

}

private void annal(){

int l = 0

switch (operator) {

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

if (!sign.equals("0"))

sign = sign + Character.toString(operator)

else

sign = sign.concat(Character.toString(operator)).substring(1)

break

case '0':

if (!sign.equals("") &&!sign.equals("0"))

sign = sign + Character.toString(operator)

else

sign = "0"

break

case 'B':

if (sign.length() >1 &&sign.charAt(txt.getText().length() - 1) != '.') {

sign = (sign.substring(0,sign.length() - 1))

} else if (sign.length() >2) {

sign = (sign.substring(0,sign.length() - 2))

} else {

sign = "0"

}

break

case 'C':

sign = ""

sign2 = ""

sign1 = "0"

operator = ' '

break

case 'E':

System.exit(0)

break

case 'O':

sign = ""

sign2 = ""

sign1 = "0"

operator = ' '

i++

break

case '+':

case '-':

case '*':

case '/':

count()

break

case '=':

count()

operator1 = ' '

sign3 = "-1"

break

case '.':

if (sign.equals("")) {

sign = "0".concat(Character.toString(operator))

} else {

for (int i = 0i <sign.length()i++) {

if (sign.charAt(i) == '.') {

l++

}

}

if (l == 0) {

sign = sign + Character.toString(operator)

}

}

break

}

}

private void count(){

double number1 = 0,number2 = 0

if (!sign.equals(""))

sign2 = sign

else

sign2 = "0"

sign = ""

if (!sign3.equals("-1"))

sign3 = sign1

else

sign3 = "0"

number1 = Double.valueOf(sign3).doubleValue()

number2 = Double.valueOf(sign2).doubleValue()

switch(operator1){

case '+':

resault = number1 + number2

break

case '-':

resault = number1 - number2

break

case '*':

resault = number1 * number2

break

case '/':

resault = number1 / number2

break

case ' ':

resault = Double.valueOf(sign2).doubleValue()

}

operator1 = operator

sign1 = Double.toString(resault)

}

private void showresault(String sign) {

int j = sign.length() - 1

String subsign = ""

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

if (sign.charAt(i) == '.')

{

j = i

break

}

}

if (j != sign.length() - 1) {

subsign = sign.substring(j+1)

if (Double.valueOf(subsign).doubleValue() >0)

txt.setText(sign)

else

txt.setText(sign.substring(0, j))

}

else

txt.setText(sign)

}

private void opinion(String sign){

txt.setText(sign)

}

public static void main(String[] args) {

Counter counter = new Counter()

}

}

这个是以前自己做的一个计算器,可能不是很完善,注释没写,但代码相对简单,应该可以看明白


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

原文地址: https://outofmemory.cn/yw/11047271.html

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

发表评论

登录后才能评论

评论列表(0条)

保存