色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

怎么用eclipse去編寫一個計算器

林國瑞2年前32瀏覽0評論

怎么用eclipse去編寫一個計算器?

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class Calc1 extends JFrame implements ActionListener {

String[] KEYS = { "1", "2", "3", "+", "4", "5", "6", "-",

"7", "8", "9", "*", "0", ".", "/", "=" };

JButton keys[] = new JButton[KEYS.length];

JButton jbclean = new JButton("clean");

JTextField resultText = new JTextField("0", 10);

// 標志用戶按的是否是整個表達式的第一個數字,或者是運算符后的第一個數字

private boolean firstDigit = true;

// 計算的中間結果。

private double resultNum = 0.0;

// 當前運算的運算符

private String operator = "=";

// 操作是否合法

private boolean operateValidFlag = true;

public Calc1() {

init();

// 設置計算器的背景顏色

this.setBackground(Color.LIGHT_GRAY);

this.setTitle("計算器");

// 在屏幕(500, 300)坐標處顯示計算器

this.setLocation(500, 300);

// 允許修改計算器的大小

this.setResizable(true);

//設置可見

this.setVisible(true);

// 使計算器中各組件大小合適

this.pack();

}

private void init() {

// 文本框中的內容采用右對齊方式

resultText.setHorizontalAlignment(JTextField.RIGHT);

// 不允許修改結果文本框

resultText.setEditable(false);

// 設置文本框背景顏色為白色

resultText.setBackground(Color.WHITE);

JPanel toppanel=new JPanel();

toppanel.add(resultText);

jbClean.setForeground(Color.red);

toppanel.add(jbClean);

JPanel calckeysPanel = new JPanel();

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

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

keys[i] = new JButton(KEYS[i]);

calckeysPanel.add(keys[i]);

keys[i].setForeground(Color.blue);

}

//設置監聽

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

keys[i].addActionListener(this);

}

jbClean.addActionListener(this);

this.setLayout(new BorderLayout());

this.add(toppanel,BorderLayout.NORTH);

this.add(calckeysPanel, BorderLayout.CENTER);

}

//時間監聽

@Override

public void actionPerformed(ActionEvent e) {

// 獲取事件源的標簽

String label = e.getActionCommand();

if ("0123456789.".indexOf(label) >= 0) {

// 用戶按了數字鍵或者小數點鍵

handleNumber(label);

} else if(label=="clean") {

// 用戶按了運算符鍵

resultText.setText("");

}else {

//用戶按下了運算符鍵

handleoperator(label);

}

}

/**

* 處理數字鍵被按下的事件

*

* @param key

*/

private void handleNumber(String key) {

if (firstDigit) {

// 輸入的第一個數字

resultText.setText(key);

} else if ((key.equals(".")) && (resultText.getText().indexOf(".") < 0)) {

// 輸入的是小數點,并且之前沒有小數點,則將小數點附在結果文本框的后面

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

} else if (!key.equals(".")) {

// 如果輸入的不是小數點,則將數字附在結果文本框的后面

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

}

// 以后輸入的肯定不是第一個數字了

firstDigit = false;

}

/**

* 處理運算符鍵被按下的事件

*

* @param key

*/

private void handleOperator(String key) {

if (operator.equals("/")) {

// 除法運算

// 如果當前結果文本框中的值等于0

if (getNumberFromText() == 0.0) {

// 操作不合法

operateValidFlag = false;

resultText.setText("除數不能為零");

} else {

resultNum /= getNumberFromText();

}

} else if (operator.equals("+")) {

// 加法運算

resultNum += getNumberFromText();

} else if (operator.equals("-")) {

// 減法運算

resultNum -= getNumberFromText();

} else if (operator.equals("*")) {

// 乘法運算

resultNum *= getNumberFromText();

} else if(operator.equalsIgnoreCase("/")) {

//除法運算

resultNum=getNumberFromText();

}

else if (operator.equals("=")) {

// 賦值運算

resultNum = getNumberFromText();

}

if (operateValidFlag) {

// 雙精度浮點數的運算

long t1;

double t2;

t1 = (long) resultNum;

t2 = resultNum - t1;

if (t2 == 0) {

resultText.setText(String.valueOf(t1));

} else {

resultText.setText(String.valueOf(resultNum));

}

}

// 運算符等于用戶按的按鈕

operator = key;

firstDigit = true;

operateValidFlag = true;

}

/**

* 從結果文本框中獲取數字

*

* @return

*/

private double getNumberFromText() {

double result = 0;

try {

result = Double.valueOf(resultText.getText()).doubleValue();

} catch (NumberFormatException e) {

}

return result;

}

public static void main(String[] args) {

new Calc1();

}

}