title: Why am i getting the error "Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero"?
body: <blockquote>
    <pre class="lang-none prettyprint-override"><code>Exception in thread "AWT-EventQueue-0" java.lang.ArithmeticException: / by zero
          at factoroperations.compute(factoroperations.java:21)
          at factorframe$buttonhandler.actionPerformed(factorframe.java:71)
          at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:20
  18)
          at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
  a:2341)
          at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
  .java:402)
          at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259
  )
          at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
  istener.java:252)
          at java.awt.Component.processMouseEvent(Component.java:6504)
          at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
          at java.awt.Component.processEvent(Component.java:6269)
          at java.awt.Container.processEvent(Container.java:2229)
          at java.awt.Component.dispatchEventImpl(Component.java:4860)
          at java.awt.Container.dispatchEventImpl(Container.java:2287)
          at java.awt.Component.dispatchEvent(Component.java:4686)
          at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832
  )
          at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
  
          at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
          at java.awt.Container.dispatchEventImpl(Container.java:2273)
          at java.awt.Window.dispatchEventImpl(Window.java:2713)
          at java.awt.Component.dispatchEvent(Component.java:4686)
          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
          at java.awt.EventQueue.access$000(EventQueue.java:101)
          at java.awt.EventQueue$3.run(EventQueue.java:666)
          at java.awt.EventQueue$3.run(EventQueue.java:664)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
  
  
  main.java:76)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
  main.java:87)
          at java.awt.EventQueue$4.run(EventQueue.java:680)
          at java.awt.EventQueue$4.run(EventQueue.java:678)
          at java.security.AccessController.doPrivileged(Native Method)
          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDo
  main.java:76)
          at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
  ad.java:211)
          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
  java:128)
          at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
  ad.java:117)
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
  
          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
  
          at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
  </code></pre>
  </blockquote>
  
  <pre class="lang-java prettyprint-override"><code>//Project: A program that factors numbers
  
  //This defines the properties of the user interface
  
  import java.awt.FlowLayout;
  import java.awt.event.ActionListener;
  import java.awt.event.ActionEvent;
  import java.awt.Font;
  import javax.swing.JFrame;
  import javax.swing.JButton;
  import javax.swing.JTextField;
  import javax.swing.JLabel;
  
  public class factorframe extends JFrame
  {//declare all the variables
      private JLabel integerlabel;
      private JTextField integerfield;
      private JLabel factorslabel;
      private JTextField factorsfield;
      private JLabel namelabel;
      private JButton computebutton;
      private JButton clearbutton;
      private JButton exitbutton;
      private String integerstring;
      private long integer;
      private String factorsstring;
      private int factors;
      private factoroperations factormachine;
  
   public factorframe() //This is the constructor
   {  //add all buttons and fields
      super("Factor Frame");
      setLayout(new FlowLayout());
      namelabel = new JLabel("Integer Factorization  By Michael Daigh");
      add(namelabel);
      integerlabel = new JLabel("Enter an integer:");
      add(integerlabel);
      integerfield = new JTextField(20);
      add(integerfield);
      factorslabel = new JLabel("The factors are:");
      add(factorslabel);
      factorsfield = new JTextField(20);
      add(factorsfield);
      computebutton = new JButton("Compute Factors");
      add(computebutton);
      clearbutton = new JButton("Clear");
      add(clearbutton);
      exitbutton = new JButton("Exit");
      add(exitbutton);
      buttonhandler myhandler = new buttonhandler();
      computebutton.addActionListener(myhandler);
      clearbutton.addActionListener(myhandler);
      exitbutton.addActionListener(myhandler);
      factormachine = new factoroperations();
   }//End of constructor method
   private class buttonhandler implements ActionListener
     {public void actionPerformed(ActionEvent event)
          {
              if(event.getSource() == computebutton)//if user clicks compute factors
              {//computes the factors of the number
                  integerstring = integerfield.getText();//get the number
                  integer = Long.parseLong(integerstring);
                  factorsstring = factoroperations.compute(integer);
                  factorsfield.setText(factorsstring);//display the factors
              }
              else if(event.getSource() == clearbutton)//if user clicks clear
              {//clears all data in integer field and factor field
                  integer=0;
                  integerfield.setText("");
                  factors=0;
                  factorsfield.setText("");
              }
              else if(event.getSource() == exitbutton)//if user clicks exit
              {//exits the program
                  System.exit(0);
              }
              else
                  System.out.println("Unknown error");
          }//End of actionPerformed
      }//End of buttonhandler class
  }//End of factorframe class
  
  
  //Project: A program that factors numbers
  
  //This contains the algorithm used by this project.
  
  public class factoroperations
  {
   public static String compute(long integer)
   {
      String factor="";//initialize the factor string
      int check = 1;//initialize the prime check
      for(int i=2; i&lt;=integer/2; i++)
      {
          if(integer%i==0)//i is a factor of the number
          {
              for(int k=2; k&lt;i; k++)//check if it is prime
              {
                  if(i%k ==0)
                  {
                      check = 1;
                      break;
                  }
                  else
                      check = 0;
              }
              if(check == 0 || i == 2)//display the prime factors only
              {
                  factor = factor + " " + i + "P";
              }
              else if(check == 1)//display all other factors
                  factor = factor + " " + i;
          }
      }
      if(factor == "")//if number does not factor, it is already prime
      {
          factor = "No factors. It is a prime number";
      }
      return factor;
   }
  }//End factoroperations class
  
  
  //Project: A program that factors numbers
  
  //This activates the user interface.
  import javax.swing.JFrame;
  public class testfactor
  {public static void main(String[] args)
      {factorframe myframe = new factorframe();
       myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       myframe.setSize(325,225);
       myframe.setVisible(true);
      }//End of main
  }//End of class testfactor
  </code></pre>