最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實現(xiàn)的計算器功能示例【基于swing組件】

 更新時間:2017年12月21日 10:13:49   作者:xxiaowen  
這篇文章主要介紹了java實現(xiàn)的計算器功能,結(jié)合實例形式分析了java基于swing組件實現(xiàn)計算器功能相關(guān)運算操作技巧,需要的朋友可以參考下

本文實例講述了java實現(xiàn)的計算器功能。分享給大家供大家參考,具體如下:

package awtDemo;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class Calculator extends JFrame implements ActionListener {
    private final String[] KEYS = { "7", "8", "9", "/", "sqrt", "4", "5", "6",
            "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" };
    private final String[] COMMAND = { "Backspace", "CE", "C" };
    private JButton keys[] = new JButton[KEYS.length];
    private JButton commands[] = new JButton[COMMAND.length];
    private JTextField resultText = new JTextField("0");
    private boolean firstDigit = true;
    private double resultNum = 0.0;
    private String operator = "=";
    private boolean operateValidFlag = true;
    public Calculator() {
        init();
        this.setBackground(Color.LIGHT_GRAY);
        this.setTitle("m.fzitv.net - 計算器");
        this.setLocation(500, 300);
        this.setResizable(false);
        this.pack();
    }
    private void init() {
        resultText.setHorizontalAlignment(JTextField.RIGHT);
        resultText.setEditable(false);
        resultText.setBackground(Color.white);
        JPanel calckeysPanel = new JPanel();
        calckeysPanel.setLayout(new GridLayout(4, 5, 3, 3));
        for (int i = 0; i < KEYS.length; i++) {
            keys[i] = new JButton(KEYS[i]);
            calckeysPanel.add(keys[i]);
            keys[i].setForeground(Color.blue);
        }
        keys[3].setForeground(Color.red);
        keys[8].setForeground(Color.red);
        keys[13].setForeground(Color.red);
        keys[18].setForeground(Color.red);
        keys[19].setForeground(Color.red);
        JPanel commandsPanel = new JPanel();
        commandsPanel.setLayout(new GridLayout(1, 3, 3, 3));
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i] = new JButton(COMMAND[i]);
            commandsPanel.add(commands[i]);
            commands[i].setForeground(Color.red);
        }
        JPanel panel1 = new JPanel();
        panel1.setLayout(new BorderLayout(3, 3));
        panel1.add("North", commandsPanel);
        panel1.add("West", calckeysPanel);
        JPanel top = new JPanel();
        top.setLayout(new BorderLayout());
        top.add("Center", resultText);
        getContentPane().setLayout(new BorderLayout(3, 5));
        getContentPane().add("North", top);
        getContentPane().add("Center", panel1);
        for (int i = 0; i < KEYS.length; i++) {
            keys[i].addActionListener(this);
        }
        for (int i = 0; i < COMMAND.length; i++) {
            commands[i].addActionListener(this);
        }
    }
    public void actionPerformed(ActionEvent e) {
        String label = e.getActionCommand();
        if (label.equals(COMMAND[0])) {
            handleBackspace();
        } else if (label.equals(COMMAND[1])) {
            resultText.setText("0");
        } else if (label.equals(COMMAND[2])) {
            handleC();
        } else if ("0123456789.".indexOf(label) >= 0) {
            handleNumber(label);
        } else {
            handleOperator(label);
        }
    }
    private void handleBackspace() {
        String text = resultText.getText();
        int i = text.length();
        if (i > 0) {
            text = text.substring(0, i - 1);
            if (text.length() == 0) {
                resultText.setText("0");
                firstDigit = true;
                operator = "=";
            } else {
                resultText.setText(text);
            }
        }
    }
    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;
    }
    private void handleC() {
        resultText.setText("0");
        firstDigit = true;
        operator = "=";
    }
    private void handleOperator(String key) {
        if (operator.equals("/")) {
            if (getNumberFromText() == 0.0) {
                operateValidFlag = false;
                resultText.setText("除數(shù)不能為零");
            } else {
                resultNum /= getNumberFromText();
            }
        } else if (operator.equals("1/x")) {
            if (resultNum == 0.0) {
                operateValidFlag = false;
                resultText.setText("零沒有倒數(shù)");
            } else {
                resultNum = 1 / resultNum;
            }
        } else if (operator.equals("+")) {
            resultNum += getNumberFromText();
        } else if (operator.equals("-")) {
            resultNum -= getNumberFromText();
        } else if (operator.equals("*")) {
            resultNum *= getNumberFromText();
        } else if (operator.equals("sqrt")) {
            resultNum = Math.sqrt(resultNum);
        } else if (operator.equals("%")) {
            resultNum = resultNum / 100;
        } else if (operator.equals("+/-")) {
            resultNum = resultNum * (-1);
        } 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;
    }
    private double getNumberFromText() {
        double result = 0;
        try {
            result = Double.valueOf(resultText.getText()).doubleValue();
        } catch (NumberFormatException e) {
        }
        return result;
    }
    public static void main(String args[]) {
        Calculator calculator1 = new Calculator();
        calculator1.setVisible(true);
        calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

運行效果:

PS:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:

在線一元函數(shù)(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學(xué)計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Java 流的高級使用之收集數(shù)據(jù)解析

    Java 流的高級使用之收集數(shù)據(jù)解析

    這篇文章主要介紹了Java 流的高級使用之收集數(shù)據(jù)解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解如何利用jasypt實現(xiàn)配置文件加密

    詳解如何利用jasypt實現(xiàn)配置文件加密

    Jasypt?(Java?Simplified?Encryption)?是一個?java?庫,它允許開發(fā)人員以最小的成本將基本的加密功能添加到項目中,而無需深入了解密碼學(xué)的工作原理。本文將利用jasypt實現(xiàn)配置文件加密,感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • jpa多數(shù)據(jù)源時Hibernate配置自動生成表不生效的解決

    jpa多數(shù)據(jù)源時Hibernate配置自動生成表不生效的解決

    這篇文章主要介紹了jpa多數(shù)據(jù)源時Hibernate配置自動生成表不生效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • SpringBoot對接小程序微信支付的實現(xiàn)

    SpringBoot對接小程序微信支付的實現(xiàn)

    本文主要介紹了SpringBoot對接小程序微信支付的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-09-09
  • Java經(jīng)典設(shè)計模式之裝飾器模式解析

    Java經(jīng)典設(shè)計模式之裝飾器模式解析

    這篇文章主要介紹了Java經(jīng)典設(shè)計模式之裝飾器模式解析,裝飾器模式主要解決繼承關(guān)系過于復(fù)雜的問題,通過組合來替代繼承,指在不改變現(xiàn)有對象結(jié)構(gòu)的情況下,動態(tài)地給該對象增加一些職責(zé)(即增加其額外功能)的模式,需要的朋友可以參考下
    2023-08-08
  • JVM內(nèi)存模型/內(nèi)存空間:運行時數(shù)據(jù)區(qū)

    JVM內(nèi)存模型/內(nèi)存空間:運行時數(shù)據(jù)區(qū)

    這篇文章主要介紹了JVM內(nèi)存模型/內(nèi)存空間的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java虛擬機,感興趣的朋友可以了解詳細,希望能夠給你帶來幫助
    2021-08-08
  • OpenFeign實現(xiàn)攜帶請求頭方案詳細介紹

    OpenFeign實現(xiàn)攜帶請求頭方案詳細介紹

    這篇文章主要介紹了OpenFeign實現(xiàn)攜帶請求頭方案,在通過???OpenFeign???進行服務(wù)調(diào)用的過程中,我們需要將用戶的??user-token???、??lang??等信息放入請求header中。在分布式系統(tǒng)中,往往一個業(yè)務(wù)接口內(nèi)部會發(fā)生多次RPC調(diào)用
    2022-11-11
  • java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段

    java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段

    這篇文章主要為大家詳細介紹了java web將數(shù)據(jù)導(dǎo)出為Excel格式文件代碼片段,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java中的split使用方法詳解

    Java中的split使用方法詳解

    這篇文章主要介紹了Java中的split使用方法詳解,Java 中 String 的 split 方法可以將字符串根據(jù)指定的間隔進行切割,經(jīng)過切割后得到的返回值是一個字符串數(shù)組,需要的朋友可以參考下
    2023-10-10
  • JFreeChart動態(tài)畫折線圖的方法

    JFreeChart動態(tài)畫折線圖的方法

    這篇文章主要為大家詳細介紹了JFreeChart動態(tài)畫折線圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06

最新評論

闻喜县| 宁武县| 马公市| 阿图什市| 蓬安县| 会东县| 永城市| 蓬安县| 祥云县| 中卫市| 遵义市| 张家港市| 南宫市| 丰县| 同心县| 玛多县| 多伦县| 贡嘎县| 柘荣县| 麻栗坡县| 沧州市| 仙居县| 信丰县| 大田县| 永泰县| 太仓市| 长乐市| 金湖县| 凌海市| 木兰县| 安化县| 双峰县| 六盘水市| 永寿县| 蒲城县| 宁乡县| 舞钢市| 青州市| 安顺市| 五大连池市| 吴忠市|