/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package scientificcalculator;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;
public class ScientificCalculator extends JFrame implements ActionListener {
 JTextField tfield;
 double temp, temp1, result, a;
 static double m1, m2;
 int k = 1, x = 0, y = 0, z = 0;
 char ch;
 JButton b1, b2, b3, b4, b5, b6, b7, b8, b9, zero, clr, pow2, pow3, exp,
   fac, plus, min, div, log, rec, mul, eq, addSub, dot, mr, mc, mp,
   mm, sqrt, sin, cos, tan;
 Container cont;
 JPanel textPanel, buttonpanel;
 ScientificCalculator() {
  cont = getContentPane();
  cont.setLayout(new BorderLayout());
  JPanel textpanel = new JPanel();
  tfield = new JTextField(25);
  tfield.setHorizontalAlignment(SwingConstants.RIGHT);
  tfield.addKeyListener(new KeyAdapter() {
   public void keyTyped(KeyEvent keyevent) {
    char c = keyevent.getKeyChar();
    if (c >= '0' && c <= '9') {
    } else {
     keyevent.consume();
    }
   }
  });
  textpanel.add(tfield);
  buttonpanel = new JPanel();
  buttonpanel.setLayout(new GridLayout(8, 4, 2, 2));
  boolean t = true;
  mr = new JButton("MR");
  buttonpanel.add(mr);
  mr.addActionListener(this);
  mc = new JButton("MC");
  buttonpanel.add(mc);
  mc.addActionListener(this);
  mp = new JButton("M+");
  buttonpanel.add(mp);
  mp.addActionListener(this);
  mm = new JButton("M-");
  buttonpanel.add(mm);
  mm.addActionListener(this);
  b1 = new JButton("1");
  buttonpanel.add(b1);
  b1.addActionListener(this);
  b2 = new JButton("2");
  buttonpanel.add(b2);
  b2.addActionListener(this);
  b3 = new JButton("3");
  buttonpanel.add(b3);
  b3.addActionListener(this);
  b4 = new JButton("4");
  buttonpanel.add(b4);
  b4.addActionListener(this);
  b5 = new JButton("5");
  buttonpanel.add(b5);
  b5.addActionListener(this);
  b6 = new JButton("6");
  buttonpanel.add(b6);
  b6.addActionListener(this);
  b7 = new JButton("7");
  buttonpanel.add(b7);
  b7.addActionListener(this);
  b8 = new JButton("8");
  buttonpanel.add(b8);
  b8.addActionListener(this);
  b9 = new JButton("9");
  buttonpanel.add(b9);
  b9.addActionListener(this);
  zero = new JButton("0");
  buttonpanel.add(zero);
  zero.addActionListener(this);
  plus = new JButton("+");
  buttonpanel.add(plus);
  plus.addActionListener(this);
  min = new JButton("-");
  buttonpanel.add(min);
  min.addActionListener(this);
  mul = new JButton("*");
  buttonpanel.add(mul);
  mul.addActionListener(this);
  div = new JButton("/");
  div.addActionListener(this);
  buttonpanel.add(div);
  addSub = new JButton("+/-");
  buttonpanel.add(addSub);
  addSub.addActionListener(this);
  dot = new JButton(".");
  buttonpanel.add(dot);
  dot.addActionListener(this);
  eq = new JButton("=");
  buttonpanel.add(eq);
  eq.addActionListener(this);
  rec = new JButton("1/x");
  buttonpanel.add(rec);
  rec.addActionListener(this);
  sqrt = new JButton("Sqrt");
  buttonpanel.add(sqrt);
  sqrt.addActionListener(this);
  log = new JButton("log");
  buttonpanel.add(log);
  log.addActionListener(this);
  sin = new JButton("SIN");
  buttonpanel.add(sin);
  sin.addActionListener(this);
  cos = new JButton("COS");
  buttonpanel.add(cos);
  cos.addActionListener(this);
  tan = new JButton("TAN");
  buttonpanel.add(tan);
  tan.addActionListener(this);
  pow2 = new JButton("x^2");
  buttonpanel.add(pow2);
  pow2.addActionListener(this);
  pow3 = new JButton("x^3");
  buttonpanel.add(pow3);
  pow3.addActionListener(this);
  exp = new JButton("Exp");
  exp.addActionListener(this);
  buttonpanel.add(exp);
  fac = new JButton("n!");
  fac.addActionListener(this);
  buttonpanel.add(fac);
  clr = new JButton("AC");
  buttonpanel.add(clr);
  clr.addActionListener(this);
  cont.add("Center", buttonpanel);
  cont.add("North", textpanel);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 }
 public void actionPerformed(ActionEvent e) {
  String s = e.getActionCommand();
  if (s.equals("1")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "1");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "1");
    z = 0;
   }
  }
  if (s.equals("2")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "2");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "2");
    z = 0;
   }
  }
  if (s.equals("3")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "3");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "3");
    z = 0;
   }
  }
  if (s.equals("4")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "4");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "4");
    z = 0;
   }
  }
  if (s.equals("5")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "5");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "5");
    z = 0;
   }
  }
  if (s.equals("6")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "6");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "6");
    z = 0;
   }
  }
  if (s.equals("7")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "7");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "7");
    z = 0;
   }
  }
  if (s.equals("8")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "8");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "8");
    z = 0;
   }
  }
  if (s.equals("9")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "9");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "9");
    z = 0;
   }
  }
  if (s.equals("0")) {
   if (z == 0) {
    tfield.setText(tfield.getText() + "0");
   } else {
    tfield.setText("");
    tfield.setText(tfield.getText() + "0");
    z = 0;
   }
  }
  if (s.equals("AC")) {
   tfield.setText("");
   x = 0;
   y = 0;
   z = 0;
  }
  if (s.equals("log")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.log(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("1/x")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = 1 / Double.parseDouble(tfield.getText());
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("Exp")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.exp(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("x^2")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.pow(Double.parseDouble(tfield.getText()), 2);
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("x^3")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.pow(Double.parseDouble(tfield.getText()), 3);
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("+/-")) {
   if (x == 0) {
    tfield.setText("-" + tfield.getText());
    x = 1;
   } else {
    tfield.setText(tfield.getText());
   }
  }
  if (s.equals(".")) {
   if (y == 0) {
    tfield.setText(tfield.getText() + ".");
    y = 1;
   } else {
    tfield.setText(tfield.getText());
   }
  }
  if (s.equals("+")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
    temp = 0;
    ch = '+';
   } else {
    temp = Double.parseDouble(tfield.getText());
    tfield.setText("");
    ch = '+';
    y = 0;
    x = 0;
   }
   tfield.requestFocus();
  }
  if (s.equals("-")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
    temp = 0;
    ch = '-';
   } else {
    x = 0;
    y = 0;
    temp = Double.parseDouble(tfield.getText());
    tfield.setText("");
    ch = '-';
   }
   tfield.requestFocus();
  }
  if (s.equals("/")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
    temp = 1;
    ch = '/';
   } else {
    x = 0;
    y = 0;
    temp = Double.parseDouble(tfield.getText());
    ch = '/';
    tfield.setText("");
   }
   tfield.requestFocus();
  }
  if (s.equals("*")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
    temp = 1;
    ch = '*';
   } else {
    x = 0;
    y = 0;
    temp = Double.parseDouble(tfield.getText());
    ch = '*';
    tfield.setText("");
   }
   tfield.requestFocus();
  }
  if (s.equals("MC")) {
   m1 = 0;
   tfield.setText("");
  }
  if (s.equals("MR")) {
   tfield.setText("");
   tfield.setText(tfield.getText() + m1);
  }
  if (s.equals("M+")) {
   if (k == 1) {
    m1 = Double.parseDouble(tfield.getText());
    k++;
   } else {
    m1 += Double.parseDouble(tfield.getText());
    tfield.setText("" + m1);
   }
  }
  if (s.equals("M-")) {
   if (k == 1) {
    m1 = Double.parseDouble(tfield.getText());
    k++;
   } else {
    m1 -= Double.parseDouble(tfield.getText());
    tfield.setText("" + m1);
   }
  }
  if (s.equals("Sqrt")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.sqrt(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("SIN")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.sin(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("COS")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.cos(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("TAN")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = Math.tan(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  if (s.equals("=")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    temp1 = Double.parseDouble(tfield.getText());
    switch (ch) {
    case '+':
     result = temp + temp1;
     break;
    case '-':
     result = temp - temp1;
     break;
    case '/':
     result = temp / temp1;
     break;
    case '*':
     result = temp * temp1;
     break;
    }
    tfield.setText("");
    tfield.setText(tfield.getText() + result);
    z = 1;
   }
  }
  if (s.equals("n!")) {
   if (tfield.getText().equals("")) {
    tfield.setText("");
   } else {
    a = fact(Double.parseDouble(tfield.getText()));
    tfield.setText("");
    tfield.setText(tfield.getText() + a);
   }
  }
  tfield.requestFocus();
 }
 double fact(double x) {
  int er = 0;
  if (x < 0) {
   er = 20;
   return 0;
  }
  double i, s = 1;
  for (i = 2; i <= x; i += 1.0)
   s *= i;
  return s;
 }
 public static void main(String args[]) {
  try {
   UIManager
     .setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
  } catch (Exception e) {
  }
  ScientificCalculator f = new ScientificCalculator();
  f.setTitle("ScientificCalculator");
  f.pack();
  f.setVisible(true);
 }
}
No comments:
Post a Comment