answersLogoWhite

0


Best Answer

The following is for a simple calculator; a scientific calculator is more complicated. I will assume the user will press keys to have a number appear on the display; to (for example) add this with another number, the user presses "+" followed by the second number, followed by "=".

You would use a visual interface, with the number display, the digits, the equal sign, and a few operations (plus, minus, multiply, divide, ...).

As soon as the user types the second number, the first number will disappear from the screen; therefore, you have to save it into some variable.

Every time a key is pressed, you have to decide whether you should add a digit to the number in the display (if it is a digit, or a period), or whether to do a calculation (if it is +, -, *, /). If it is an operation, do the operation (conditionally, depending on the selected operation), and replace the number displayed by the new value.

This is my sample code using JAVA:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.text.*;

import javax.swing.border.*;

class Calc extends JFrame implements ActionListener

{

private static final Font BIGGER_FONT = new Font("Tahoma", Font.BOLD, 13);

private JRadioButton decimalb,binaryb,octalb,hexab,enableb, disableb;

private JTextField _displayField, decimalTF, binaryTF, octalTF, hexaTF;

private JLabel decimalL,binaryL,octalL,hexaL;

private JButton exitb, convertb, clearb, backSpace, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0, b11, b12, b13;

private JButton b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25;

private JPanel cbPanel, upperButtonPanel;

private ButtonGroup group, group2;

private boolean pluz = false;

private boolean subs = false;

private boolean multiply = false;

private boolean divide = false;

private boolean _startNumber = true;

private boolean dotCheck = false;

private String firstValue, Secondvalue;

private String _previousOp = "=";

private DecimalFormat df = new DecimalFormat("###,###,###.##");

private CalculatorLogic calLogic = new CalculatorLogic();

public static void main(String[] args) {

try {

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

} catch (Exception unused) {

;

}

Calc window = new Calc();

window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

window.setVisible(true);

}

public Calc()

{

super("Calculator With Number System Converter");

_displayField = new JTextField("", 15);

_displayField.setHorizontalAlignment(JTextField.RIGHT);

_displayField.setFont(BIGGER_FONT);

_displayField.setEditable(false);

_displayField.setBackground(Color.WHITE);

upperButtonPanel = new JPanel();

upperButtonPanel.setLayout(new FlowLayout());

upperButtonPanel.setBackground(Color.lightGray);

upperButtonPanel.setPreferredSize(new Dimension(170, 300));

decimalb = new JRadioButton("Decimal", false);

binaryb = new JRadioButton("Binary", false);

octalb = new JRadioButton("Octal", false);

hexab = new JRadioButton("Hexadecimal", false);

decimalb.setFont(BIGGER_FONT);

binaryb.setFont(BIGGER_FONT);

octalb.setFont(BIGGER_FONT);

hexab.setFont(BIGGER_FONT);

decimalb.addActionListener(this);

binaryb.addActionListener(this);

octalb.addActionListener(this);

hexab.addActionListener(this);

group = new ButtonGroup();

group.add(decimalb);

group.add(binaryb);

group.add(octalb);

group.add(hexab);

upperButtonPanel.add(decimalb);

upperButtonPanel.add(binaryb);

upperButtonPanel.add(octalb);

upperButtonPanel.add(hexab);

upperButtonPanel.setVisible(false);

JPanel panel = new JPanel(new GridLayout(10, 1));

panel.setPreferredSize(new Dimension(300, 300));

panel.setBorder(new BevelBorder(BevelBorder.LOWERED));

decimalTF = new JTextField(20);

binaryTF = new JTextField(20);

octalTF = new JTextField(20);

hexaTF = new JTextField(20);

decimalTF.setEditable(false);

binaryTF.setEditable(false);

octalTF.setEditable(false);

hexaTF.setEditable(false);

decimalTF.setBackground(Color.WHITE);

binaryTF.setBackground(Color.WHITE);

octalTF.setBackground(Color.WHITE);

hexaTF.setBackground(Color.WHITE);

decimalTF.setFont(BIGGER_FONT);

binaryTF.setFont(BIGGER_FONT);

octalTF.setFont(BIGGER_FONT);

hexaTF.setFont(BIGGER_FONT);

decimalTF.setVisible(false);

binaryTF.setVisible(false);

octalTF.setVisible(false);

hexaTF.setVisible(false);

decimalL = new JLabel("Decimal Value");

binaryL = new JLabel("Binary Value");

octalL = new JLabel("Octal Value");

hexaL = new JLabel("Hexadecimal Value");

decimalL.setFont(BIGGER_FONT);

binaryL.setFont(BIGGER_FONT);

octalL.setFont(BIGGER_FONT);

hexaL.setFont(BIGGER_FONT);

decimalL.setVisible(false);

binaryL.setVisible(false);

octalL.setVisible(false);

hexaL.setVisible(false);

panel.add(decimalL);

panel.add(decimalTF);

panel.add(binaryL);

panel.add(binaryTF);

panel.add(octalL);

panel.add(octalTF);

panel.add(hexaL);

panel.add(hexaTF);

upperButtonPanel.add(panel);

add(upperButtonPanel, BorderLayout.NORTH);

JPanel buttonPanel = new JPanel();

buttonPanel.setLayout(new GridLayout(5, 2, 5, 5));

buttonPanel.setBackground(Color.lightGray);

buttonPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));

b9 = new JButton("9");

b8 = new JButton("8");

b7 = new JButton("7");

b6 = new JButton("6");

b5 = new JButton("5");

b4 = new JButton("4");

b3 = new JButton("3");

b2 = new JButton("2");

b1 = new JButton("1");

b0 = new JButton("0");

b11 = new JButton(".");

b12 = new JButton("/");

b13 = new JButton("*");

b14 = new JButton("-");

b15 = new JButton("+");

b16 = new JButton("A");

b17 = new JButton("B");

b18 = new JButton("C");

b19 = new JButton("D");

b20 = new JButton("E");

b21 = new JButton("F");

b22 = new JButton("=");

b23 = new JButton("sqrt");

b24 = new JButton("x\u00B2");

b25 = new JButton("x\u00B3");

b1.setFont(BIGGER_FONT);

b2.setFont(BIGGER_FONT);

b3.setFont(BIGGER_FONT);

b4.setFont(BIGGER_FONT);

b5.setFont(BIGGER_FONT);

b6.setFont(BIGGER_FONT);

b7.setFont(BIGGER_FONT);

b8.setFont(BIGGER_FONT);

b9.setFont(BIGGER_FONT);

b0.setFont(BIGGER_FONT);

b11.setFont(BIGGER_FONT);

b12.setFont(BIGGER_FONT);

b13.setFont(BIGGER_FONT);

b14.setFont(BIGGER_FONT);

b15.setFont(BIGGER_FONT);

b16.setFont(BIGGER_FONT);

b17.setFont(BIGGER_FONT);

b18.setFont(BIGGER_FONT);

b19.setFont(BIGGER_FONT);

b20.setFont(BIGGER_FONT);

b21.setFont(BIGGER_FONT);

b22.setFont(BIGGER_FONT);

b23.setFont(BIGGER_FONT);

b24.setFont(BIGGER_FONT);

b25.setFont(BIGGER_FONT);

b1.addActionListener(this);

b2.addActionListener(this);

b3.addActionListener(this);

b4.addActionListener(this);

b5.addActionListener(this);

b6.addActionListener(this);

b7.addActionListener(this);

b8.addActionListener(this);

b9.addActionListener(this);

b0.addActionListener(this);

b11.addActionListener(this);

b12.addActionListener(this);

b13.addActionListener(this);

b14.addActionListener(this);

b15.addActionListener(this);

b16.addActionListener(this);

b17.addActionListener(this);

b18.addActionListener(this);

b19.addActionListener(this);

b20.addActionListener(this);

b21.addActionListener(this);

b22.addActionListener(this);

b23.addActionListener(this);

b24.addActionListener(this);

b25.addActionListener(this);

b16.setEnabled(false);

b17.setEnabled(false);

b18.setEnabled(false);

b19.setEnabled(false);

b20.setEnabled(false);

b21.setEnabled(false);

buttonPanel.add(b7);

buttonPanel.add(b8);

buttonPanel.add(b9);

buttonPanel.add(b12);

buttonPanel.add(b13);

buttonPanel.add(b15);

buttonPanel.add(b4);

buttonPanel.add(b5);

buttonPanel.add(b6);

buttonPanel.add(b15);

buttonPanel.add(b14);

buttonPanel.add(b11);

buttonPanel.add(b1);

buttonPanel.add(b2);

buttonPanel.add(b3);

buttonPanel.add(b0);

buttonPanel.add(b22);

buttonPanel.add(b16);

buttonPanel.add(b17);

buttonPanel.add(b18);

buttonPanel.add(b11);

buttonPanel.add(b23);

buttonPanel.add(b19);

buttonPanel.add(b20);

buttonPanel.add(b21);

buttonPanel.add(b24);

buttonPanel.add(b25);

add(buttonPanel);

group2 = new ButtonGroup();

disableb = new JRadioButton("Disable Converter", true);

enableb = new JRadioButton("Enable Converter", false);

disableb.setFont(BIGGER_FONT);

enableb.setFont(BIGGER_FONT);

disableb.addActionListener(this);

enableb.addActionListener(this);

group2.add(disableb);

group2.add(enableb);

cbPanel = new JPanel(new GridLayout(3, 3));

cbPanel.setBorder(new BevelBorder(BevelBorder.RAISED));

cbPanel.add(disableb);

cbPanel.add(enableb);

convertb = new JButton("Convert");

clearb = new JButton("Clear");

exitb = new JButton("Exit");

backSpace = new JButton("BackSpace");

convertb.addActionListener(this);

clearb.addActionListener(this);

exitb.addActionListener(this);

backSpace.addActionListener(this);

convertb.setFont(BIGGER_FONT);

clearb.setFont(BIGGER_FONT);

exitb.setFont(BIGGER_FONT);

backSpace.setFont(BIGGER_FONT);

cbPanel.add(convertb);

cbPanel.add(clearb);

cbPanel.add(backSpace);

cbPanel.add(exitb);

convertb.setEnabled(false);

JPanel content2 = new JPanel();

content2.setLayout(new BorderLayout(5, 5));

content2.add(_displayField, BorderLayout.NORTH);

content2.add(buttonPanel , BorderLayout.CENTER);

content2.add(cbPanel, BorderLayout.SOUTH);

add(content2, BorderLayout.SOUTH);

this.setSize(340, 300);

this.setResizable(false);

this.setLocationRelativeTo(null);

}

public void actionPerformed(ActionEvent e)

{

try{

if(decimalb.isSelected())

{

b0.setEnabled(true);

b1.setEnabled(true);

b2.setEnabled(true);

b3.setEnabled(true);

b4.setEnabled(true);

b5.setEnabled(true);

b6.setEnabled(true);

b7.setEnabled(true);

b8.setEnabled(true);

b9.setEnabled(true);

b16.setEnabled(false);

b17.setEnabled(false);

b18.setEnabled(false);

b19.setEnabled(false);

b20.setEnabled(false);

b21.setEnabled(false);

}

else if(binaryb.isSelected())

{

b2.setEnabled(false);

b3.setEnabled(false);

b4.setEnabled(false);

b5.setEnabled(false);

b6.setEnabled(false);

b7.setEnabled(false);

b8.setEnabled(false);

b9.setEnabled(false);

b16.setEnabled(false);

b17.setEnabled(false);

b18.setEnabled(false);

b19.setEnabled(false);

b20.setEnabled(false);

b21.setEnabled(false);

}

else if(octalb.isSelected())

{

b0.setEnabled(true);

b1.setEnabled(true);

b2.setEnabled(true);

b3.setEnabled(true);

b4.setEnabled(true);

b5.setEnabled(true);

b6.setEnabled(true);

b7.setEnabled(true);

b16.setEnabled(false);

b17.setEnabled(false);

b18.setEnabled(false);

b19.setEnabled(false);

b20.setEnabled(false);

b21.setEnabled(false);

b8.setEnabled(false);

b9.setEnabled(false);

}

else if(hexab.isSelected())

{

b0.setEnabled(true);

b1.setEnabled(true);

b2.setEnabled(true);

b3.setEnabled(true);

b4.setEnabled(true);

b5.setEnabled(true);

b6.setEnabled(true);

b7.setEnabled(true);

b8.setEnabled(true);

b9.setEnabled(true);

b16.setEnabled(true);

b17.setEnabled(true);

b18.setEnabled(true);

b19.setEnabled(true);

b20.setEnabled(true);

b21.setEnabled(true);

}

if((e.getActionCommand().equals("Convert")) && decimalb.isSelected())

{

String input, bin="",oct="",hex="";

int rem,rem2,rem3,len;

char x;

input = _displayField.getText().trim();

try{

if(input.equals(""))

throw new Exception("Error");

else

len = input.length();

int num = Integer.parseInt(input);

while(num>0)

{

rem = num%2;

num/=2;

bin = rem + bin;

}

binaryTF.setText(bin);

decimalTF.setText(input);

int num2 = Integer.parseInt(input);

while(num2>0)

{

rem2 = num2%8;

oct = rem2 + oct;

num2/=8;

}

octalTF.setText(oct);

int num3 = Integer.parseInt(input);

while(num3>0)

{

rem3 = num3%16;

if(rem3<10)

hex = rem3 + hex;

else if(rem3 0)

{

JOptionPane.showMessageDialog(null,"Can't divide by zero", "Error Message", JOptionPane.ERROR_MESSAGE);

return 0;

}

else

return (a / b);

}

public double stringToDouble(String a)

{

return Double.parseDouble(a);

}

}

User Avatar

Wiki User

12y ago
This answer is:
User Avatar
More answers
User Avatar

Wiki User

13y ago

fdfdfffdfdfdf

dfd

fd

f

df

df

d

f

df

df

df

This answer is:
User Avatar

Add your answer:

Earn +20 pts
Q: Scientific calculator in java source code?
Write your answer...
Submit
Still have questions?
magnify glass
imp
Related questions

Download code for scientific calculator in java?

yes


What kind of file contain java source code?

'.java' files contain java source code. One can access these files on windows by using 'notepad'.


Where does source code come from in java?

Source code comes from the programmer...


What does the Java compiler translate Java source code to?

The Java compiler translates Java source code to Java byte code.


Java source code for median filter algorithm?

research is going on to develop a source code for median filtering using java


Differencitate between source code and bytcode in java?

The source code is just the set of statements written in (any included) java language by a programer (in this case our source code is a text file with .java extension). And in other hand a bytecode is the resulting code of compile a .java file, It is not machine code, but it can be interpreted and executed by the jvm.


What does a compiler perform?

A compiler converts high-level source code into native machine. In the case of Java, source code is compiled to Java byte code suitable for interpretation by the Java virtual machine which produces the machine code.


Where does bytecode come from java?

It is created by the Java compiler, based on the source code (the .java file).


How do you extract the java source code of a java based open source software?

If the software is open source then generally they will provide the code in a separate link. I don't think it is possible to reverse-engineer the code of a program.


What is a Javacode?

If someone talks about "Java code," then they're are most likely referring to the source code of a Java program.


Website of free java project to be download with source code?

which Website for free java project to be download with source code Free Download Project in asp.net,Java ,C#.Net ,Php on thisWebsite www.enggroom.com


What do you call a Program that runs Java byte code instruction?

Get the JDK &amp; Bluej from net and the rest will be done by them. Java byte codes are stored as *.class ; where "*" represents the class name, in your hard disk. You can download BlueJ as well as JDK from the related link.