Im working on a fraction calculator, I manage to get the "+" and "-" operators to simplify correctly. I cant seem to get the "*" to simplify. I have not tried to get "/" to work yet. Why is my program not simplifying the fraction when I use multiplication?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.text.*;
import java.awt.Color;
public class FractionCalculator extends JFrame
{
private JLabel overJLabel, resultNumeratorJLabel, resultDenominatorJLabel;
private JTextField numerator1JTextField, denominator1JTextField, numerator2JTextField, denominator2JTextField;
private JButton addJButton, subtractJButton, multiplyJButton, divideJButton;
public FractionCalculator()
{
createUserInterface();
}
private void createUserInterface()
{
Container container = getContentPane();
Container containerPane = getContentPane();
container.setLayout( null );
setTitle( "Fraction Calculator" );
setSize( 500, 500 );
setVisible( true );
numerator1JTextField = new JTextField();
numerator1JTextField.setBounds( 100, 116, 40, 40 );
numerator1JTextField.setText( "0" );
container.add( numerator1JTextField );
overJLabel = new JLabel();
overJLabel.setBounds( 90, 136, 100, 40 );
overJLabel.setText( "_________" );
container.add( overJLabel);
denominator1JTextField = new JTextField();
denominator1JTextField.setBounds( 100, 166, 40, 40 );
denominator1JTextField.setText( "0" );
container.add( denominator1JTextField );
addJButton = new JButton();
addJButton.setBounds( 200, 100, 45, 40 );
addJButton.setText( "+" );
container.add( addJButton );
addJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when user clicks submitJButton
public void actionPerformed( ActionEvent event )
{
addJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
subtractJButton = new JButton();
subtractJButton.setBounds( 200, 150, 45, 40 );
subtractJButton.setText( "-" );
container.add( subtractJButton );
subtractJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when user clicks submitJButton
public void actionPerformed( ActionEvent event )
{
subtractJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
multiplyJButton = new JButton();
multiplyJButton.setBounds( 200, 200, 45, 40 );
multiplyJButton.setText( "*" );
container.add( multiplyJButton );
multiplyJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when user clicks submitJButton
public void actionPerformed( ActionEvent event )
{
multiplyJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
divideJButton = new JButton();
divideJButton.setBounds( 200, 250, 45, 40 );
divideJButton.setText( "/" );
container.add( divideJButton );
divideJButton.addActionListener(
new ActionListener() // anonymous inner class
{
// event handler called when user clicks submitJButton
public void actionPerformed( ActionEvent event )
{
divideJButtonActionPerformed( event );
}
} // end anonymous inner class
); // end call to addActionListener
numerator2JTextField = new JTextField();
numerator2JTextField.setBounds( 300, 116, 40, 40 );
numerator2JTextField.setText( "0" );
container.add( numerator2JTextField );
overJLabel = new JLabel();
overJLabel.setBounds( 290, 136, 100, 40 );
overJLabel.setText( "_________" );
container.add( overJLabel);
denominator2JTextField = new JTextField();
denominator2JTextField.setBounds( 300, 166, 40, 40 );
denominator2JTextField.setText( "0" );
container.add( denominator2JTextField );
resultNumeratorJLabel = new JLabel();
resultNumeratorJLabel.setBounds( 400, 116, 40, 40 );
resultNumeratorJLabel.setText( "0" );
container.add( resultNumeratorJLabel );
overJLabel = new JLabel();
overJLabel.setBounds( 390, 136, 100, 40 );
overJLabel.setText( "_________" );
container.add( overJLabel);
resultDenominatorJLabel = new JLabel();
resultDenominatorJLabel.setBounds( 400, 166, 40, 40 );
resultDenominatorJLabel.setText( "0" );
container.add( resultDenominatorJLabel );
this.repaint();
}
private void addJButtonActionPerformed( ActionEvent event )
{
int numeratorTotal = 0;
numeratorTotal = Integer.parseInt(resultNumeratorJLabel.getText());
int denominatorTotal = 0;
denominatorTotal = Integer.parseInt(resultDenominatorJLabel.getText());
int numerator1 = 0;
numerator1 = Integer.parseInt(numerator1JTextField.getText());
int numerator2 = 0;
numerator2 = Integer.parseInt(numerator2JTextField.getText());
int denominator1 = 0;
denominator1 = Integer.parseInt(denominator1JTextField.getText());
int denominator2 = 0;
denominator2 = Integer.parseInt(denominator2JTextField.getText());
int lcm = (denominator1 == denominator2 || denominator1 == 1) ? denominator2 :(denominator2 == 1 ? denominator1 : 0);
if (lcm == 0)
{
int den2 = denominator2, den1 = denominator1;
while (den2 != den1)
{
while (den2 < den1)
{
den2 += denominator2;
}
while (den1 < den2)
{
den1 += denominator1;
}
}
lcm = den2;
}
if(denominator1 == denominator2)
{
//numeratorTotal = numerator1 + numerator2;
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) + (Integer.parseInt(numerator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(denominator1JTextField.getText()));
}
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) + (Integer.parseInt(number2JTextField.getText()))));
else
{
numeratorTotal = ((lcm/denominator1)*numerator1)+((lcm/denominator2)*numerator2);
denominatorTotal = (lcm);
for(int x = lcm ; x > 1 ; x -- )
{
if( denominatorTotal % x == 0 && numeratorTotal % x == 0)
{
denominatorTotal = denominatorTotal / x;
numeratorTotal = numeratorTotal/ x;
//least = findleast(num , den);
x = 2;
break;
}// end if
}// end for
resultNumeratorJLabel.setText(String.valueOf(numeratorTotal));
resultDenominatorJLabel.setText(String.valueOf(denominatorTotal));
}
}
private void subtractJButtonActionPerformed( ActionEvent event )
{
int numeratorTotal = 0;
numeratorTotal = Integer.parseInt(resultNumeratorJLabel.getText());
int denominatorTotal = 0;
denominatorTotal = Integer.parseInt(resultDenominatorJLabel.getText());
int numerator1 = 0;
numerator1 = Integer.parseInt(numerator1JTextField.getText());
int numerator2 = 0;
numerator2 = Integer.parseInt(numerator2JTextField.getText());
int denominator1 = 0;
denominator1 = Integer.parseInt(denominator1JTextField.getText());
int denominator2 = 0;
denominator2 = Integer.parseInt(denominator2JTextField.getText());
int lcm = (denominator1 == denominator2 || denominator1 == 1) ? denominator2 :(denominator2 == 1 ? denominator1 : 0);
if (lcm == 0)
{
int den2 = denominator2, den1 = denominator1;
while (den2 != den1)
{
while (den2 < den1)
{
den2 += denominator2;
}
while (den1 < den2)
{
den1 += denominator1;
}
}
lcm = den2;
}
if(denominator1 == denominator2)
{
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) - (Integer.parseInt(numerator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(denominator1JTextField.getText()));
}
else
{
//int lcm;
//int den=0;
//int num=0;
// = findleast(int den, int num);
numeratorTotal = ((lcm/denominator1)*numerator1)-((lcm/denominator2)*numerator2);
denominatorTotal = (lcm);
for(int x = lcm ; x > 1 ; x -- )
{
if( denominatorTotal % x == 0 && numeratorTotal % x == 0)
{
denominatorTotal = denominatorTotal / x;
numeratorTotal = numeratorTotal/ x;
//least = findleast(num , den);
x = 2;
break;
}// end if
}// end for
resultNumeratorJLabel.setText(String.valueOf(numeratorTotal));
resultDenominatorJLabel.setText(String.valueOf(denominatorTotal));
}
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) - (Integer.parseInt(number2JTextField.getText()))));
}
private void multiplyJButtonActionPerformed( ActionEvent event )
{
int numeratorTotal = 0;
numeratorTotal = Integer.parseInt(resultNumeratorJLabel.getText());
int denominatorTotal = 0;
denominatorTotal = Integer.parseInt(resultDenominatorJLabel.getText());
int numerator1 = 0;
numerator1 = Integer.parseInt(numerator1JTextField.getText());
int numerator2 = 0;
numerator2 = Integer.parseInt(numerator2JTextField.getText());
int denominator1 = 0;
denominator1 = Integer.parseInt(denominator1JTextField.getText());
int denominator2 = 0;
denominator2 = Integer.parseInt(denominator2JTextField.getText());
int lcm = (denominator1 == denominator2 || denominator1 == 1) ? denominator2 :(denominator2 == 1 ? denominator1 : 0);
if (lcm == 0)
{
int den2 = denominator2, den1 = denominator1;
while (den2 != den1)
{
while (den2 < den1)
{
den2 += denominator2;
}
while (den1 < den2)
{
den1 += denominator1;
}
}
lcm = den2;
}
if(denominator1 == denominator2)
{
//numeratorTotal = numerator1 + numerator2;
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) * (Integer.parseInt(numerator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(denominator1JTextField.getText()));
}
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) + (Integer.parseInt(number2JTextField.getText()))));
else
{
numeratorTotal = ((lcm/denominator1)*numerator1)*((lcm/denominator2)*numerator2);
denominatorTotal = (lcm);
for(int x = lcm ; x > 1 ; x -- )
{
if( denominatorTotal % x == 0 && numeratorTotal % x == 0)
{
denominatorTotal = denominatorTotal / x;
numeratorTotal = numeratorTotal/ x;
//least = findleast(num , den);
x = 2;
break;
}// end if
}// end for
resultNumeratorJLabel.setText(String.valueOf(numeratorTotal));
resultDenominatorJLabel.setText(String.valueOf(denominatorTotal));
}
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) * (Integer.parseInt(numerator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(Integer.parseInt(denominator1JTextField.getText()) * (Integer.parseInt(denominator2JTextField.getText()))));
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) * (Integer.parseInt(number2JTextField.getText()))));
}
private void divideJButtonActionPerformed( ActionEvent event )
{
int numeratorTotal = 0;
numeratorTotal = Integer.parseInt(resultNumeratorJLabel.getText());
int denominatorTotal = 0;
denominatorTotal = Integer.parseInt(resultDenominatorJLabel.getText());
int numerator1 = 0;
numerator1 = Integer.parseInt(numerator1JTextField.getText());
int numerator2 = 0;
numerator2 = Integer.parseInt(numerator2JTextField.getText());
int denominator1 = 0;
denominator1 = Integer.parseInt(denominator1JTextField.getText());
int denominator2 = 0;
denominator2 = Integer.parseInt(denominator2JTextField.getText());
int lcm = (denominator1 == denominator2 || denominator1 == 1) ? denominator2 :(denominator2 == 1 ? denominator1 : 0);
if (lcm == 0)
{
int den2 = denominator2, den1 = denominator1;
while (den2 != den1)
{
while (den2 < den1)
{
den2 += denominator2;
}
while (den1 < den2)
{
den1 += denominator1;
}
}
lcm = den2;
}
if(denominator1 == denominator2)
{
//numeratorTotal = numerator1 + numerator2;
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) / (Integer.parseInt(numerator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(denominator1JTextField.getText()));
}
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) + (Integer.parseInt(number2JTextField.getText()))));
else
{
resultNumeratorJLabel.setText(String.valueOf(((lcm/denominator1)*numerator1)+((lcm/denominator2)*numerator2)));
resultDenominatorJLabel.setText(String.valueOf(lcm));
}
resultNumeratorJLabel.setText(String.valueOf(Integer.parseInt(numerator1JTextField.getText()) * (Integer.parseInt(denominator2JTextField.getText()))));
resultDenominatorJLabel.setText(String.valueOf(Integer.parseInt(denominator1JTextField.getText()) * (Integer.parseInt(numerator2JTextField.getText()))));
//resultJTextField.setText(String.valueOf(Integer.parseInt(number1JTextField.getText()) / (Integer.parseInt(number2JTextField.getText()))));
}
public static void main( String[] args )
{
FractionCalculator application = new FractionCalculator();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}