Quantcast
Channel: Programming Forums
Viewing all articles
Browse latest Browse all 51036

Simplifying fractions

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


Viewing all articles
Browse latest Browse all 51036

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>