Advertisement
Guest User

client

a guest
Nov 27th, 2010
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 7.34 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3.  
  4.  
  5.  
  6. public class Calculator
  7.     implements ActionListener
  8. {
  9.  
  10.     TextField display;
  11.     Panel     keys;
  12.     int       maxLength   = 20;
  13.     String    output      = "0";
  14.     boolean   decimal     = false;
  15.     float     result      = 0.0f;
  16.     String    operation   = "";
  17.     boolean   newNumber   = true;
  18.     boolean   finished    = false;
  19.     boolean   memory      = false;
  20.     float     memoryValue = 0.0f;
  21.  
  22.  
  23.  
  24.     public void init()
  25.     {
  26.         Frame window = new Frame();
  27.  
  28.         window.setTitle("XML11 Calculator");
  29.         window.setLayout(new FlowLayout());
  30.         window.setFont(new Font("Helvetica", Font.PLAIN, 12));
  31.         window.setBackground(Color.white);
  32.  
  33.         Panel panel = new Panel();
  34.  
  35.         panel.setLayout(new BorderLayout());
  36.         panel.setFont(new Font("Helvetica", Font.PLAIN, 12));
  37.         panel.setBackground(Color.lightGray);
  38.  
  39.         display = new TextField(maxLength + 1);
  40.         display.setEditable(false);
  41.         display.setFont(new Font("Helvetica", Font.PLAIN, 12));
  42.         display.setBackground(Color.white);
  43.  
  44.         keys = new Panel();
  45.         keys.setLayout(new GridLayout(5, 5));
  46.         keys.setFont(new Font("Helvetica", Font.PLAIN, 12));
  47.         keys.setBackground(Color.lightGray);
  48.  
  49.         keys.add(addButton("+/-"));
  50.         keys.add(addButton(""));
  51.         keys.add(addButton(""));
  52.         keys.add(addButton(""));
  53.         keys.add(addButton("AC"));
  54.  
  55.         keys.add(addButton("M+"));
  56.         keys.add(addButton("7"));
  57.         keys.add(addButton("8"));
  58.         keys.add(addButton("9"));
  59.         keys.add(addButton("/"));
  60.  
  61.         keys.add(addButton("M-"));
  62.         keys.add(addButton("4"));
  63.         keys.add(addButton("5"));
  64.         keys.add(addButton("6"));
  65.         keys.add(addButton("x"));
  66.  
  67.         keys.add(addButton("MR"));
  68.         keys.add(addButton("1"));
  69.         keys.add(addButton("2"));
  70.         keys.add(addButton("3"));
  71.         keys.add(addButton("-"));
  72.  
  73.         keys.add(addButton("MC"));
  74.         keys.add(addButton("0"));
  75.         keys.add(addButton("."));
  76.         keys.add(addButton("="));
  77.         keys.add(addButton("+"));
  78.  
  79.         panel.add("North", display);
  80.         panel.add("Center", new Label(""));
  81.         panel.add("South", keys);
  82.  
  83.         updateDisplay();
  84.  
  85.         window.add(panel);
  86.         window.pack();
  87.         window.setVisible(true);
  88.     }
  89.  
  90.  
  91.  
  92.     private Button addButton(String label)
  93.     {
  94.         Button btn = new Button(label);
  95.         btn.addActionListener(this);
  96.         return btn;
  97.     }
  98.  
  99.  
  100.  
  101.     public void updateDisplay()
  102.     {
  103.         String output_right = "";
  104.         for (int i = 1; i <= (maxLength - output.length()); i++) {
  105.             if ((i == 1) && (memory))
  106.                 output_right = output_right + "M";
  107.             else
  108.                 output_right = output_right + "_";
  109.         }
  110.  
  111.         output_right = output_right + output;
  112.         display.setText(output_right);
  113.     }
  114.  
  115.  
  116.  
  117.     public void appendDigit(String new_d)
  118.     {
  119.         if (output == "0")
  120.             output = "";
  121.  
  122.         if (output.length() < maxLength) {
  123.             if (newNumber) {
  124.                 output = new_d;
  125.                 newNumber = false;
  126.             }
  127.             else
  128.                 output = output + new_d;
  129.             updateDisplay();
  130.         }
  131.  
  132.         if (finished || operation == "") {
  133.             result = Float.valueOf(output).floatValue();
  134.             finished = false;
  135.             operation = "";
  136.         }
  137.     }
  138.  
  139.  
  140.  
  141.     public void key_equals()
  142.     {
  143.         evaluate();
  144.  
  145.         operation = "";
  146.         newNumber = true;
  147.         decimal = false;
  148.         finished = true;
  149.     }
  150.  
  151.  
  152.  
  153.     public void evaluate()
  154.     {
  155.         if (operation.equals("plus"))
  156.             result += Float.valueOf(output).floatValue();
  157.         else if (operation.equals("minus"))
  158.             result -= Float.valueOf(output).floatValue();
  159.         else if (operation.equals("times"))
  160.             result *= Float.valueOf(output).floatValue();
  161.         else if (operation.equals("div"))
  162.             result /= Float.valueOf(output).floatValue();
  163.         else
  164.             result = Float.valueOf(output).floatValue();
  165.  
  166.         if (finished == true)
  167.             finished = false;
  168.  
  169.         output = Float.toString(result);
  170.         updateDisplay();
  171.  
  172.         newNumber = true;
  173.         decimal = false;
  174.     }
  175.  
  176.  
  177.  
  178.     public void actionPerformed(ActionEvent evt)
  179.     {
  180.         String cmd = evt.getActionCommand();
  181.  
  182.         if (cmd.equals("AC")) {
  183.             result = 0;
  184.             output = Float.toString(result);
  185.  
  186.             operation = "";
  187.             newNumber = true;
  188.             decimal = false;
  189.             finished = true;
  190.  
  191.             updateDisplay();
  192.         }
  193.  
  194.         if (cmd.equals("+/-")) {
  195.             float val = Float.valueOf(output).floatValue();
  196.             val *= -1;
  197.             output = Float.toString(val);
  198.             updateDisplay();
  199.         }
  200.  
  201.         if (cmd.equals("1"))
  202.             appendDigit("1");
  203.         if (cmd.equals("2"))
  204.             appendDigit("2");
  205.         if (cmd.equals("3"))
  206.             appendDigit("3");
  207.         if (cmd.equals("4"))
  208.             appendDigit("4");
  209.         if (cmd.equals("5"))
  210.             appendDigit("5");
  211.         if (cmd.equals("6"))
  212.             appendDigit("6");
  213.         if (cmd.equals("7"))
  214.             appendDigit("7");
  215.         if (cmd.equals("8"))
  216.             appendDigit("8");
  217.         if (cmd.equals("9"))
  218.             appendDigit("9");
  219.         if (cmd.equals("0"))
  220.             if (output.length() != 0)
  221.                 appendDigit("0");
  222.  
  223.         if (cmd.equals("."))
  224.             if (output.length() < maxLength)
  225.                 if (!decimal) {
  226.                     decimal = true;
  227.                     if (output.length() == 0 || newNumber) {
  228.                         output = "0.";
  229.                         newNumber = false;
  230.                     }
  231.                     else
  232.                         output = output + ".";
  233.  
  234.                     updateDisplay();
  235.                 }
  236.  
  237.         if (cmd.equals("="))
  238.             key_equals();
  239.  
  240.         if (cmd.equals("+")) {
  241.             evaluate();
  242.             operation = "plus";
  243.         }
  244.  
  245.         if (cmd.equals("-")) {
  246.             evaluate();
  247.             operation = "minus";
  248.         }
  249.  
  250.         if (cmd.equals("x")) {
  251.             evaluate();
  252.             operation = "times";
  253.         }
  254.  
  255.         if (cmd.equals("/")) {
  256.             evaluate();
  257.             operation = "div";
  258.         }
  259.  
  260.         if (cmd.equals("M+")) {
  261.             memory = true;
  262.             key_equals();
  263.             memoryValue += Float.valueOf(output).floatValue();
  264.             updateDisplay();
  265.         }
  266.  
  267.         if (cmd.equals("M-")) {
  268.             memory = true;
  269.             key_equals();
  270.             memoryValue -= Float.valueOf(output).floatValue();
  271.             updateDisplay();
  272.         }
  273.  
  274.         if (cmd.equals("MR")) {
  275.             if (memory) {
  276.                 output = Float.toString(memoryValue);
  277.                 updateDisplay();
  278.             }
  279.         }
  280.  
  281.         if (cmd.equals("MC")) {
  282.             memory = false;
  283.             memoryValue = 0.0f;
  284.             updateDisplay();
  285.         }
  286.  
  287.         if (output.equals(""))
  288.             output = "0";
  289.     }
  290.  
  291.  
  292.  
  293.     static public void main(String[] args)
  294.     {
  295.         new Calculator().init();
  296.     }
  297. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement