この記事では、Javaによって実装された計算関数について説明します。次のように、参照のために共有してください。
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")パブリッククラス計算機はjframeを実装しますactionlistener {private final string [] keys = {"7"、 "8"、 "9"、 "/"/"、" sqrt "、" 4 "、" 5 "、" 6、 "、" "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;プライベートダブル結果num = 0.0;プライベート文字列operator = "="; private boolean operatorvalidflag = true; public calculator(){init(); this.setbackground(color.light_gray); this.settitle( "www.vevb.com -calculator"); this.setlocation(500、300); this.SetSizable(false); this.pack(); } private void init(){restext.sethorizontalAlignment(jtextfield.right); restertext.setedable(false); restertext.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);キー[8] .setforeground(color.red);キー[13] .setforeground(color.red);キー[18] .setforeground(color.red);キー[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]);コマンド[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"、restertext); 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])){restertext.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 = restertext.getText(); int i = text.length(); if(i> 0){text = text.substring(0、i -1); if(text.length()== 0){restertext.settext( "0"); firstDigit = true; operator = "="; } else {restertext.settext(text); }}} private void handlenumber(string key){if(firstDigit){restertext.settext(key); } else if(key.equals( "。"))&&(restertext.getText()。indexof( "。")<0)){restertext.settext(restertext.getText() + "。"); } else if(!key.equals( " } firstDigit = false; } private void handlec(){restertext.settext( "0"); firstDigit = true; operator = "="; } private void handleOperator(string key){if(operator.equals( "/")){if(getNumberFromText()== 0.0){operatorValidFlag = false; restertext.settext( "離婚はゼロになることはできません"); } else {resultnum /= getNumberFromText(); }} else if(operator.equals( "1/x")){if(resultnum == 0.0){operatorValidFlag = false; restertext.settext( "zeroには相互にありません"); } 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( " *")){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;ダブルT2; t1 =(long)resultnum; T2 = resultnum -t1; if(t2 == 0){restertext.settext(string.valueof(t1)); } else {restertext.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 calculate1 = new calculator(); Calculate1.setVisible(true); Calculate1.setDefaultCloseoperation(jframe.exit_on_close); }}ランニング効果:
PS:次のような計算ツールがいくつかあります。
オンライン統一関数(EQ)ソリューション計算ツール:
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Scientific Calculator Online Use_Advanced Calculator Online Calculator:
http://tools.vevb.com/jisuanqi/jsqkeexue
オンラインcalculator_standard電卓:
http://tools.vevb.com/jisuanqi/jsq
Javaアルゴリズムの詳細については、このサイトに興味のある読者は、「Javaデータ構造とアルゴリズムのチュートリアル」、「Java操作DOMノードのヒントの要約」、「Javaファイルの要約およびディレクトリ操作のヒント」、「Java Cache操作のヒントの要約」というトピックを見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。