Calc計算器

一段簡單的Java計算器代碼 

2009-12-29 20:52:47|  分類: 學海泛舟 |  標籤: |字號訂閱

今天在一個QQ羣上看到一位朋友發了一個編譯未通過的Java計算器源代碼,遂收藏下來並將其更正。Mark之,以供日後參考。

程序比較簡單,可以說並不是很好的設計,但對於Java中swing及awt的使用,可以作爲一個簡單有效的例子。運行起來如下圖所示:

一段簡單的Java計算器代碼 - 小葉 - 一葉扁舟

下面,將此Java程序分享一下(詳細描述見註釋):

/*

* @(#)JCalculator.java 1.00 12/29/2009

*

* Email: light_warm@163.com

*/

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

* A simple calculator program.

* <p>I saw this program in a QQ group, and help a friend correct it.</p>

*

* @author Singyuen Yip

* @version 1.00 12/29/2009

* @see JFrame

* @see ActionListener

*/

publicclass JCalculator extends JFrame implements ActionListener {

/**

* Serial Version UID

*/

privatestaticfinallongserialVersionUID = -169068472193786457L;

/**

* This class help close the Window.

* @author Singyuen Yip

*

*/

privateclass WindowCloser extends WindowAdapter {

publicvoid windowClosing(WindowEvent we) {

System.exit(0);

}

}

inti;

// Strings for Digit & Operator buttons.

privatefinal String[] str = { "7", "8", "9", "/", "4", "5", "6", "*", "1",

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

// Build buttons.

JButton[] buttons = new JButton[str.length];

// For cancel or reset.

JButton reset = new JButton("CE");

// Build the text field to show the result.

JTextField display = new JTextField("0");

/**

* Constructor without parameters.

*/

public JCalculator() {

super("Calculator");

// Add a panel.

JPanel panel1 = new JPanel(new GridLayout(4, 4));

// panel1.setLayout(new GridLayout(4,4));

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

buttons[i] = new JButton(str[i]);

panel1.add(buttons[i]);

}

JPanel panel2 = new JPanel(new BorderLayout());

// panel2.setLayout(new BorderLayout());

panel2.add("Center", display);

panel2.add("East", reset);

// JPanel panel3 = new Panel();

getContentPane().setLayout(new BorderLayout());

getContentPane().add("North", panel2);

getContentPane().add("Center", panel1);

// Add action listener for each digit & operator button.

for (i = 0; i < str.length; i++)

buttons[i].addActionListener(this);

// Add listener for "reset" button.

reset.addActionListener(this);

// Add listener for "display" button.

display.addActionListener(this);

// The "close" button "X".

addWindowListener(new WindowCloser());

// Initialize the window size.

setSize(800, 800);

// Show the window.

// show(); Using show() while JDK version is below 1.5.

setVisible(true);

// Fit the certain size.

pack();

}  

publicvoid actionPerformed(ActionEvent e) {

Object target = e.getSource();

String label = e.getActionCommand();

if (target == reset)

handleReset();

elseif ("0123456789.".indexOf(label) > 0)

handleNumber(label);

else

handleOperator(label);

}

// Is the first digit pressed?

booleanisFirstDigit = true;

/**

* Number handling.

* @param key the key of the button.

*/

publicvoid handleNumber(String key) {

if (isFirstDigit)

display.setText(key);

elseif ((key.equals(".")) && (display.getText().indexOf(".") < 0))

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

elseif (!key.equals("."))

display.setText(display.getText() + key);

isFirstDigit = false;

}

/**

* Reset the calculator.

*/

publicvoid handleReset() {

display.setText("0");

isFirstDigit = true;

operator = "=";

}

doublenumber = 0.0;

String operator = "=";

/**

* Handling the operation.

* @param key pressed operator's key.

*/

publicvoid handleOperator(String key) {

if (operator.equals("+"))

number += Double.valueOf(display.getText());

elseif (operator.equals("-"))

number -= Double.valueOf(display.getText());

elseif (operator.equals("*"))

number *= Double.valueOf(display.getText());

elseif (operator.equals("/"))

number /= Double.valueOf(display.getText());

elseif (operator.equals("="))

number = Double.valueOf(display.getText());

display.setText(String.valueOf(number));

operator = key;

isFirstDigit = true;

}

publicstaticvoid main(String[] args) {

new JCalculator();

}

發佈了2 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章