Este artigo descreve as funções da calculadora implementadas pelo Java. Compartilhe -o para sua referência, como segue:
pacote awtdemo; importar java.awt.borderlayout; importar java.awt.color; importar java.awt.gridlayout; importar java.awt.event.actionEvent; importação javax.awt.event.action.Action; import.kraxing.sport; 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", "+/-", ".", "+", "="}; String final privada [] comando = {"backspace", "ce", "c"}; private jbutton keys [] = new jbutton [keys.length]; comandos privados jbutton [] = new jbutton [command.length]; Private JTextField ResultText = new JTextField ("0"); Privado booleano primeiroDigit = true; Resultado duplo privado Num = 0,0; String privada operadora = "="; private boolean operatorValidflag = true; calculadora pública () {init (); this.setBackground (color.light_gray); this.setTitle ("www.vevb.com - calculadora"); 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] = novo jbutton (chaves [i]); calckeyspanel.add (chaves [i]); chaves [i] .setforeground (color.blue); } teclas [3] .Setforeground (color.red); chaves [8] .Setforeground (color.red); chaves [13] .Setforeground (color.red); chaves [18] .setforeground (color.red); chaves [19] .setforeground (color.red); JPanel CommandSpanel = new JPanel (); CommandSpanel.setLayout (New GridLayout (1, 3, 3, 3)); for (int i = 0; i <comando.length; i ++) {comandos [i] = new jbutton (comando [i]); commandSpanel.add (comandos [i]); comandos [i] .setforeground (color.red); } Jpanel painel1 = new jpanel (); painel1.setLayout (New BorderLayout (3, 3)); painel1.add ("North", CommandSpanel); painel1.add ("West", CalckeysPanel); Jpanel top = new jpanel (); top.setLayout (new BorderLayout ()); top.add ("Center", ResultText); getContentPane (). Setlayout (New BorderLayout (3, 5)); getContentPane (). Add ("norte", em cima); getContentPane (). Add ("Center", Painel1); for (int i = 0; i <keys.length; i ++) {keys [i] .AddactionListener (this); } para (int i = 0; i <command.length; i ++) {comandos [i] .addactionListener (this); }} public void ActionPerformed (ActionEvent E) {String Label = E.GetActionCommand (); if (Label.Equals (comando [0])) {handlebackspace (); } else if (Label.equals (comando [1])) {resultText.Settext ("0"); } else if (Label.equals (comando [2])) {handlec (); } else if ("0123456789.". } else {handleOperator (etiqueta); }} 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"); primeirodigit = true; operator = "="; } else {ResultText.Settext (text); }}} private void handleNumber (chave de string) {if (FirstDigit) {ResultText.Settext (key); } else if ((key.equals (".")) && (ResultText.getText (). } else if (! key.equals (".")) {ResultText.Settext (ResultText.getText () + key); } primeiroDigit = false; } private void handlec () {resultText.Settext ("0"); primeirodigit = true; operator = "="; } private void handleOperator (tecla String) {if (operator.equals ("/")) {if (getNumberFromText () == 0.0) {operatorValidFlag = false; ResultText.Settext ("O divórcio não pode ser zero"); } else {resultadonum /= getNumberFromText (); }} else if (operator.equals ("1/x")) {if (resultadonum == 0.0) {operatorValidFlag = false; ResultText.Settext ("Zero não tem recíproco"); } else {resultadonum = 1 / resultadonum; }} else if (operator.equals (" +")) {resultadonum += 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 (resultadonum); } else if (operator.equals ("%")) {resultNum = resultadoNum / 100; } else if (operator.equals ("+/-")) {resultNum = resultadonum * (-1); } else if (operator.equals ("=")) {resultNum = getNumberFromText (); } if (operateValidFlag) {long t1; T2 duplo; t1 = (longo) resultNum; t2 = resultadonum - t1; if (t2 == 0) {ResultText.Settext (String.valueof (T1)); } else {ResultText.Settext (String.ValueOf (ResultNum)); }} operador = key; primeirodigit = true; operateValidFlag = true; } private duplo getNumberFromText () {resultado duplo = 0; tente {resultado = duplo.valueof (resultText.getText ()). DoubleValue (); } catch (numberFormatexception e) {} Retornar resultado; } public static void main (string args []) {calculadora calcular1 = new calculator (); calcular1.setVisible (true); calcular1.setDefaultCloseoperation (jframe.exit_on_close); }}Efeito de corrida:
PS: Aqui estão algumas ferramentas de cálculo para você se referir a:
Ferramenta de cálculo da solução de função on -line (eq):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Calculadora científica online use_advanced calculadora online calculadora:
http://tools.vevb.com/jisuanqi/jsqkeexue
Calculadora Online_Standard Calculadora:
http://tools.vevb.com/jisuanqi/jsq
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.