Calculator in Java with Source Code

Calculator in Java with Source Code

Calculator in Java with Source Code: We can develop calculator in java with the help of AWT/Swing with event handling. Let’s see the code of creating calculator in java.

  1. /*********************************************
  2. Save this file as MyCalculator.java
  3. to compile it use
  4.     javac MyCalculator.java
  5. to use the calcuator do this
  6.     java MyCalculator
  7. **********************************************/
  8. import java.awt.*;
  9. import java.awt.event.*;
  10. /*********************************************/
  11. public class MyCalculator extends Frame
  12. {
  13. public boolean setClear=true;
  14. double number, memValue;
  15. char op;
  16. String digitButtonText[] = {“7”“8”“9”“4”“5”“6”“1”“2”“3”“0”“+/-““.” };
  17. String operatorButtonText[] = {“/”“sqrt”“*”“%”“-““1/X”“+”“=” };
  18. String memoryButtonText[] = {“MC”“MR”“MS”“M+” };
  19. String specialButtonText[] = {“Backspc”“C”“CE” };
  20. MyDigitButton digitButton[]=new MyDigitButton[digitButtonText.length];
  21. MyOperatorButton operatorButton[]=new MyOperatorButton[operatorButtonText.length];
  22. MyMemoryButton memoryButton[]=new MyMemoryButton[memoryButtonText.length];
  23. MySpecialButton specialButton[]=new MySpecialButton[specialButtonText.length];
  24. Label displayLabel=new Label(“0”,Label.RIGHT);
  25. Label memLabel=new Label(” “,Label.RIGHT);
  26. final int FRAME_WIDTH=325,FRAME_HEIGHT=325;
  27. final int HEIGHT=30, WIDTH=30, H_SPACE=10,V_SPACE=10;
  28. final int TOPX=30, TOPY=50;
  29. ///////////////////////////
  30. MyCalculator(String frameText)//constructor
  31. {
  32. super(frameText);
  33. int tempX=TOPX, y=TOPY;
  34. displayLabel.setBounds(tempX,y,240,HEIGHT);
  35. displayLabel.setBackground(Color.BLUE);
  36. displayLabel.setForeground(Color.WHITE);
  37. add(displayLabel);
  38. memLabel.setBounds(TOPX,  TOPY+HEIGHT+ V_SPACE,WIDTH, HEIGHT);
  39. add(memLabel);
  40. // set Co-ordinates for Memory Buttons
  41. tempX=TOPX;
  42. y=TOPY+2*(HEIGHT+V_SPACE);
  43. for(int i=0; i<memoryButton.length; i++)
  44. {
  45. memoryButton[i]=new MyMemoryButton(tempX,y,WIDTH,HEIGHT,memoryButtonText[i], this);
  46. memoryButton[i].setForeground(Color.RED);
  47. y+=HEIGHT+V_SPACE;
  48. }
  49. //set Co-ordinates for Special Buttons
  50. tempX=TOPX+1*(WIDTH+H_SPACE); y=TOPY+1*(HEIGHT+V_SPACE);
  51. for(int i=0;i<specialButton.length;i++)
  52. {
  53. specialButton[i]=new MySpecialButton(tempX,y,WIDTH*2,HEIGHT,specialButtonText[i], this);
  54. specialButton[i].setForeground(Color.RED);
  55. tempX=tempX+2*WIDTH+H_SPACE;
  56. }
  57. //set Co-ordinates for Digit Buttons
  58. int digitX=TOPX+WIDTH+H_SPACE;
  59. int digitY=TOPY+2*(HEIGHT+V_SPACE);
  60. tempX=digitX;  y=digitY;
  61. for(int i=0;i<digitButton.length;i++)
  62. {
  63. digitButton[i]=new MyDigitButton(tempX,y,WIDTH,HEIGHT,digitButtonText[i], this);
  64. digitButton[i].setForeground(Color.BLUE);
  65. tempX+=WIDTH+H_SPACE;
  66. if((i+1)%3==0){tempX=digitX; y+=HEIGHT+V_SPACE;}
  67. }
  68. //set Co-ordinates for Operator Buttons
  69. int opsX=digitX+2*(WIDTH+H_SPACE)+H_SPACE;
  70. int opsY=digitY;
  71. tempX=opsX;  y=opsY;
  72. for(int i=0;i<operatorButton.length;i++)
  73. {
  74. tempX+=WIDTH+H_SPACE;
  75. operatorButton[i]=new MyOperatorButton(tempX,y,WIDTH,HEIGHT,operatorButtonText[i], this);
  76. operatorButton[i].setForeground(Color.RED);
  77. if((i+1)%2==0){tempX=opsX; y+=HEIGHT+V_SPACE;}
  78. }
  79. addWindowListener(new WindowAdapter()
  80. {
  81. public void windowClosing(WindowEvent ev)
  82. {System.exit(0);}
  83. });
  84. setLayout(null);
  85. setSize(FRAME_WIDTH,FRAME_HEIGHT);
  86. setVisible(true);
  87. }
  88. //////////////////////////////////
  89. static String getFormattedText(double temp)
  90. {
  91. String resText=“”+temp;
  92. if(resText.lastIndexOf(“.0”)>0)
  93.     resText=resText.substring(0,resText.length()-2);
  94. return resText;
  95. }
  96. ////////////////////////////////////////
  97. public static void main(String []args)
  98. {
  99. new MyCalculator(“Calculator – JavaTpoint”);
  100. }
  101. }
  102. /*******************************************/
  103. class MyDigitButton extends Button implements ActionListener
  104. {
  105. MyCalculator cl;
  106. //////////////////////////////////////////
  107. MyDigitButton(int x,int y, int width,int height,String cap, MyCalculator clc)
  108. {
  109. super(cap);
  110. setBounds(x,y,width,height);
  111. this.cl=clc;
  112. this.cl.add(this);
  113. addActionListener(this);
  114. }
  115. ////////////////////////////////////////////////
  116. static boolean isInString(String s, char ch)
  117. {
  118. for(int i=0; i<s.length();i++) if(s.charAt(i)==ch) return true;
  119. return false;
  120. }
  121. /////////////////////////////////////////////////
  122. public void actionPerformed(ActionEvent ev)
  123. {
  124. String tempText=((MyDigitButton)ev.getSource()).getLabel();
  125. if(tempText.equals(“.”))
  126. {
  127.  if(cl.setClear)
  128.     {cl.displayLabel.setText(“0.”);cl.setClear=false;}
  129.  else if(!isInString(cl.displayLabel.getText(),‘.’))
  130.     cl.displayLabel.setText(cl.displayLabel.getText()+“.”);
  131.  return;
  132. }
  133. int index=0;
  134. try{
  135.         index=Integer.parseInt(tempText);
  136.     }catch(NumberFormatException e){return;}
  137. if (index==0 && cl.displayLabel.getText().equals(“0”)) return;
  138. if(cl.setClear)
  139.             {cl.displayLabel.setText(“”+index);cl.setClear=false;}
  140. else
  141.     cl.displayLabel.setText(cl.displayLabel.getText()+index);
  142. }//actionPerformed
  143. }//class defination
  144. /********************************************/
  145. class MyOperatorButton extends Button implements ActionListener
  146. {
  147. MyCalculator cl;
  148. MyOperatorButton(int x,int y, int width,int height,String cap, MyCalculator clc)
  149. {
  150. super(cap);
  151. setBounds(x,y,width,height);
  152. this.cl=clc;
  153. this.cl.add(this);
  154. addActionListener(this);
  155. }
  156. ///////////////////////
  157. public void actionPerformed(ActionEvent ev)
  158. {
  159. String opText=((MyOperatorButton)ev.getSource()).getLabel();
  160. cl.setClear=true;
  161. double temp=Double.parseDouble(cl.displayLabel.getText());
  162. if(opText.equals(“1/x”))
  163.     {
  164.     try
  165.         {double tempd=1/(double)temp;
  166.         cl.displayLabel.setText(MyCalculator.getFormattedText(tempd));}
  167.     catch(ArithmeticException excp)
  168.                         {cl.displayLabel.setText(“Divide by 0.”);}
  169.     return;
  170.     }
  171. if(opText.equals(“sqrt”))
  172.     {
  173.     try
  174.         {double tempd=Math.sqrt(temp);
  175.         cl.displayLabel.setText(MyCalculator.getFormattedText(tempd));}
  176.             catch(ArithmeticException excp)
  177.                     {cl.displayLabel.setText(“Divide by 0.”);}
  178.     return;
  179.     }
  180. if(!opText.equals(“=”))
  181.     {
  182.     cl.number=temp;
  183.     cl.op=opText.charAt(0);
  184.     return;
  185.     }
  186. // process = button pressed
  187. switch(cl.op)
  188. {
  189. case ‘+’:
  190.     temp+=cl.number;break;
  191. case ‘-‘:
  192.     temp=cl.number-temp;break;
  193. case ‘*’:
  194.     temp*=cl.number;break;
  195. case ‘%’:
  196.     try{temp=cl.number%temp;}
  197.     catch(ArithmeticException excp)
  198.         {cl.displayLabel.setText(“Divide by 0.”); return;}
  199.     break;
  200. case ‘/’:
  201.     try{temp=cl.number/temp;}
  202.         catch(ArithmeticException excp)
  203.                 {cl.displayLabel.setText(“Divide by 0.”); return;}
  204.     break;
  205. }//switch
  206. cl.displayLabel.setText(MyCalculator.getFormattedText(temp));
  207. //cl.number=temp;
  208. }//actionPerformed
  209. }//class
  210. /****************************************/
  211. class MyMemoryButton extends Button implements ActionListener
  212. {
  213. MyCalculator cl;
  214. /////////////////////////////////
  215. MyMemoryButton(int x,int y, int width,int height,String cap, MyCalculator clc)
  216. {
  217. super(cap);
  218. setBounds(x,y,width,height);
  219. this.cl=clc;
  220. this.cl.add(this);
  221. addActionListener(this);
  222. }
  223. ////////////////////////////////////////////////
  224. public void actionPerformed(ActionEvent ev)
  225. {
  226. char memop=((MyMemoryButton)ev.getSource()).getLabel().charAt(1);
  227. cl.setClear=true;
  228. double temp=Double.parseDouble(cl.displayLabel.getText());
  229. switch(memop)
  230. {
  231. case ‘C’:
  232.     cl.memLabel.setText(” “);cl.memValue=0.0;break;
  233. case ‘R’:
  234.     cl.displayLabel.setText(MyCalculator.getFormattedText(cl.memValue));break;
  235. case ‘S’:
  236.     cl.memValue=0.0;
  237. case ‘+’:
  238.     cl.memValue+=Double.parseDouble(cl.displayLabel.getText());
  239.     if(cl.displayLabel.getText().equals(“0”) || cl.displayLabel.getText().equals(“0.0”)  )
  240.         cl.memLabel.setText(” “);
  241.     else
  242.         cl.memLabel.setText(“M”);
  243.     break;
  244. }//switch
  245. }//actionPerformed
  246. }//class
  247. /*****************************************/
  248. class MySpecialButton extends Button implements ActionListener
  249. {
  250. MyCalculator cl;
  251. MySpecialButton(int x,int y, int width,int height,String cap, MyCalculator clc)
  252. {
  253. super(cap);
  254. setBounds(x,y,width,height);
  255. this.cl=clc;
  256. this.cl.add(this);
  257. addActionListener(this);
  258. }
  259. //////////////////////
  260. static String backSpace(String s)
  261. {
  262. String Res=“”;
  263. for(int i=0; i<s.length()-1; i++) Res+=s.charAt(i);
  264. return Res;
  265. }
  266. //////////////////////////////////////////////////////////
  267. public void actionPerformed(ActionEvent ev)
  268. {
  269. String opText=((MySpecialButton)ev.getSource()).getLabel();
  270. //check for backspace button
  271. if(opText.equals(“Backspc”))
  272. {
  273. String tempText=backSpace(cl.displayLabel.getText());
  274. if(tempText.equals(“”))
  275.     cl.displayLabel.setText(“0”);
  276. else
  277.     cl.displayLabel.setText(tempText);
  278. return;
  279. }
  280. //check for “C” button i.e. Reset
  281. if(opText.equals(“C”))
  282. {
  283. cl.number=0.0; cl.op=‘ ‘; cl.memValue=0.0;
  284. cl.memLabel.setText(” “);
  285. }
  286. //it must be CE button pressed
  287. cl.displayLabel.setText(“0”);cl.setClear=true;
  288. }//actionPerformed
  289. }//class
  290. /*********************************************
  291. Features not implemented and few bugs
  292. i)  No coding done for “+/-” button.
  293. ii) Menubar is not included.
  294. iii)Not for Scientific calculation
  295. iv)Some of the computation may lead to unexpected result
  296.    due to the representation of Floating point numbers in computer
  297.    is an approximation to the given value that can be stored
  298.    physically in memory.
  299. ***********************************************/
download this example

Calculator in Java with source code

Next TopicIP Finder in Java
java for beginners
java for beginners
java for beginners
CodSir //course // books
...

WikiSir

Calculator in Java with Source Code Calculator in Java with Source Code: We can develop calculator in java with the help of AWT/Swing with event handling. Let’s see the code of creating calculator in java. /********************************************* Save this file as MyCalculator.java to compile it use     javac MyCalculator.java to use the calcuator do this     java MyCalculator **********************************************/ import java.awt.*; import java.awt.event.*; /*********************************************/ public class MyCalculator extends Frame { public boolean setClear=true; double number, memValue; char op; String digitButtonText[] = {“7”, “8”, “9”, “4”, “5”, “6”, “1”, “2”, “3”, “0”, “+/-“, “.” }; String operatorButtonText[] = {“/”, “sqrt”, “*”, “%”, “-“, “1/X”, “+”, “=” }; String memoryButtonText[] = {“MC”, “MR”, “MS”, “M+” }; String specialButtonText[] = {“Backspc”, “C”, “CE” }; MyDigitButton digitButton[]=new MyDigitButton[digitButtonText.length]; MyOperatorButton operatorButton[]=new MyOperatorButton[operatorButtonText.length]; […]

Tags:

....
...