I started to learn Java recently and I have a problem with the StringBuilder class.
I have a StringBuilder instance and after I append many strings to it, I want to empty it to append a new sequence. 
I have tried many different things like allocating a new StringBuilder for that variable, delete, setLength and all of that, but I get an exception ArrayIndexOutOfBoundsException. 
Why am I getting this exception? How can I do this task effectively?
Edit: so in detail what i was trying to program caculate app like Window caculate app, the main thing is process variable will store number and operation so when it need to have a result it will cal caculate method to do that. It will work exactly like window caculate app. It works fine if i continue to do "+" operation repeatly, it updates the result after hit operation button, but when hit "=" button it gets an exception ArrayIndexOutOfBoundsException at process variable. I knows my code is complicated, hope you guys wil find the solution and i have tried all the solution that you guys recommended, all of that ges exception 
public class Cal extends javax.swing.JFrame {
/**
 * Creates new form Cal
 */
    StringBuilder process ;
    StringBuilder textOutcome ;
    boolean isResult; // it means that you just hit the operation button or "=" button
    boolean isRestart;// it means after you hit "=" button if after that you continue hit the operation button that will false ,if you hit numbe button it will true
     public double caculate ()
    {
        String[] split = process.toString().split(" ");
        double result = Double.valueOf(split[1]);
        for(int i = 2 ; i < split.length;i++)
        {
            if(split[i].equals("+"))
            {
              result += Double.valueOf(split[i + 1]);
              i += 1;
            }
        }
        return result;
    }
public Cal() {
    initComponents();
     process = new StringBuilder();
   textOutcome =  new StringBuilder();
    isResult = true;
   isRestart = false;
    GridLayout grid = new GridLayout(4,4,10,10);
    JButton btnAdd = new JButton("+");
       btnAdd.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
           //To change body of generated methods, choose Tools | Templates.
           txtOutcome.setText(String.valueOf(caculate()));
           process.append( " "+e.getActionCommand());
           txtProcess.setText(process.toString());
           isResult = true;
           isRestart = false;
        }
    });
    pGrid.add(btnAdd);
     JButton btn4 = new JButton("4");
     btn4.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if(isResult)
               {
                   isResult = false;
                   textOutcome = new StringBuilder();
                   textOutcome.append( e.getActionCommand());
                   txtOutcome.setText(textOutcome.toString());
                   if(isRestart)
             {
                 process = new StringBuilder();
                   isRestart = false;
             }
                   process.append( " "+e.getActionCommand());
               }
             else
             {
                  textOutcome.append( e.getActionCommand());
                   txtOutcome.setText(textOutcome.toString());
                   process.append(e.getActionCommand());
             }
        }
    });
      pGrid.add(btn4);
      JButton btnResult = new JButton("=");
      btnResult.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
             txtOutcome.setText(String.valueOf(caculate()));
          process.delete(0, process.length());
              process.append(String.valueOf(caculate()));
                txtProcess.setText(process.toString());
              isResult = true;
              isRestart = true;
        }
    });
    pGrid.add(btnResult);
      pGrid.setLayout(grid);
}
// Variables declaration - do not modify                     
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel pGrid;
private javax.swing.JTextField txtOutcome;
private javax.swing.JTextField txtProcess;
// End of variables declaration                   
}
 
     
    