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 ); } }