Inicio > Programación, java > Calculadora simple con Java

Calculadora simple con Java

Friday, 30 de January de 2009

Para todos nuestros amigos programadores que se setán recién iniciando en el tema, les tengo un pequeño tip para realizar una calculadora bastante simple, no me maten pero está hecha en una sola clase, les dije, es sólo un ejemplo.

Espero les sirva para poder hacer pruebas y familiarizarse con el lenguaje.

powered by Wordpress Multibox Plugin v1.3.5

calculadora simple en java

Acá el código fuente de la calculadora.

JAVA:
  1. package calculadora;
  2.  
  3. import javax.swing.*;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6.  
  7. public class Calculadora extends JFrame implements ActionListener  {
  8.  
  9. boolean nuevo = true;
  10. float   resultado_total = 0.0f;
  11. String  ultimo = "=";
  12. Label pantalla = null;
  13. JPanel panel, panel2;
  14.  
  15. public Calculadora() {
  16. setTitle("Calculadora");
  17.  
  18. setSize(200, 200);
  19.  
  20. Pantalla();
  21.  
  22. Teclado();
  23. }
  24.  
  25. private void Pantalla() {
  26.  
  27. panel = new JPanel();
  28. panel.setLayout(new GridLayout(1, 1));
  29. pantalla = new Label();
  30.  
  31. pantalla.setText("0");
  32. pantalla.setAlignment(Label.RIGHT);
  33. pantalla.setForeground(Color.black);
  34. pantalla.setBackground(Color.white);
  35.  
  36. panel.add(pantalla);
  37. add("North", panel);
  38. }
  39.  
  40. public void Teclado () {
  41. panel2 = new JPanel();
  42. panel2.setLayout(new GridLayout(4, 4));
  43.  
  44. addBoton("7", Color.blue);
  45. addBoton("8", Color.blue);
  46. addBoton("9", Color.blue);
  47. addBoton("/", Color.red);
  48. addBoton("C", Color.red);
  49.  
  50. addBoton("4", Color.blue);
  51. addBoton("5", Color.blue);
  52. addBoton("6", Color.blue);
  53. addBoton("*", Color.red);
  54. addBoton("√", Color.red);
  55.  
  56. addBoton("1", Color.blue);
  57. addBoton("2", Color.blue);
  58. addBoton("3", Color.blue);
  59. addBoton("-", Color.red);
  60. addBoton("AC", Color.red);
  61.  
  62. addBoton("0", Color.blue);
  63. addBoton("+/-", Color.red);
  64. addBoton(".", Color.red);
  65. addBoton("+", Color.red);
  66. addBoton("=", Color.red);
  67.  
  68. add("Center", panel2);
  69. }
  70.  
  71. private void addBoton(String n, Color color) {
  72. b = new Button(n);
  73.  
  74. b.setForeground(color);
  75.  
  76. panel2.add(b);
  77.  
  78. b.addActionListener( this );
  79. }
  80.  
  81. public void actionPerformed(ActionEvent event) {
  82.  
  83. String digit   = event.getActionCommand();
  84. String s     = pantalla.getText();
  85.  
  86. // Logic based in a source of Santiago Pavón
  87.  
  88. float  valor = 0;
  89. try {
  90. valor = new Float(s).floatValue();
  91. } catch (Exception e) {
  92. if (!digit.equals("C")) return;
  93. }
  94.  
  95. if ("0123456789".indexOf(digit) != -1) {
  96.  
  97. if (nuevo) {
  98. nuevo = false;
  99. pantalla.setText(digit);
  100. } else {
  101. pantalla.setText(s + digit);
  102. }
  103.  
  104. } else if (digit.equals(".")) {
  105.  
  106. if (nuevo) {
  107. nuevo = false;
  108. pantalla.setText("0.");
  109. } else {
  110. pantalla.setText(s + digit);
  111. }
  112.  
  113. } else if (digit.equals("sqrt")) {
  114.  
  115. valor = (float)Math.sqrt(valor);
  116. pantalla.setText(String.valueOf(valor));
  117. nuevo = true;
  118.  
  119. } else if (digit.equals("+/-")) {
  120.  
  121. valor = -valor;
  122. pantalla.setText(String.valueOf(valor));
  123. nuevo = true;
  124.  
  125. } else if (digit.equals("C")) {
  126.  
  127. resultado_total  = 0;
  128. pantalla.setText("0");
  129. ultimo = "=";
  130. nuevo = true;
  131.  
  132. } else {
  133.  
  134. char c = ultimo.charAt(0);
  135.  
  136. switch (c) {
  137. case '=': resultado_total  = valor; break;
  138. case '+': resultado_total += valor; break;
  139. case '-': resultado_total -= valor; break;
  140. case '*': resultado_total *= valor; break;
  141. case '/': resultado_total /= valor; break;
  142. }
  143. ultimo = digit;
  144. nuevo = true;
  145. pantalla.setText(String.valueOf(resultado_total));
  146. }
  147. }
  148.  
  149. public static void main(String[] args) {
  150. Calculadora cal = new Calculadora();
  151. cal.show();
  152. }

Y para los más flojos apurados les dejo el workspace completo para eclipse.

VN:F [1.0.9_379]


Comparte esto en :Enviar a Apezz
Ancelot Programación, java , ,

  1. Viktor Vera
    Tuesday, 17 de March de 2009 a las 15:34 | #1

    este mismo yo lo hice con webservices.. jejej

    VA:F [1.0.9_379]
  2. Tuesday, 17 de March de 2009 a las 16:07 | #2

    Viktor Vera :

    este mismo yo lo hice con webservices.. jejej

    UN:F [1.0.9_379]

    Sobrado :reaggantwo:

    VN:F [1.0.9_379]
  1. Sin trackbacks aún.
;) :| :x :wallhead: :twisted: :roll: :plop: :oops: :oo: :o_o: :o :nu: :mrgreen: :mad: :lol: :jaja: :idea: :gun: :grr: :flush: :evil: :drunk: :cry: :clap: :buu: :brr: :arrow: :P :D :?: :? :) :( :!: 8O 8)