Ciao a tutti, sono novello nella programmazione Java e in questi giorni mi sto esercitando in diversi esercizi che ho trovato in rete. Oggi mi sono imbattuto in un che mi sta dando non pochi problemi.
Riporto di seguito il testo dell'esercizio:

codice:
Scrivere un metodo filtra che, data una stringa A e una stringa B,
restituisce una nuova stringa ottenuta da B scartando i caratteri 
che appaiono anche in A. 
Ad esempio, se B="totti" e A="st" il risultato deve essere: "oi".
Ho quindi scritto il codice per fare questo, ma il programma non funziona e mi genera un errore che non riesco a trovare.
Di seguito il codice:

codice:
package test;

import javax.swing.JOptionPane;

public class Filter {
    String string1;
    String string2;
    
    Filter() {
        this.string1 = JOptionPane.showInputDialog("Inserie la prima stringa");
        this.string2 = JOptionPane.showInputDialog("Inserie la seconda stringa");
    }
    
    public void calculation() {
        int l1 = this.string1.length();
        int l2 = this.string2.length();
        
        for(int i=0; i<l1; i++) {
            char c1 = this.string1.charAt(i);
            for(int j=0; j<l2; j++) {
                char c2 = this.string2.charAt(j);
                if(c1==c2 & j==0) {
                    this.string2 = this.string2.substring(1);
                }
                if(c1==c2 & j>0) {
                    this.string2 = this.string2.substring(0,j)+this.string2.substring(j+1, this.string2.length());
                }
            }
        }
    }
    
    public void print() {
        System.out.println("Il risultato del processo di filtramento e': "+string2);

    }
    
    public static void main(String args[]) {
        Filter f = new Filter();
        f.calculation();
        f.print();
    }   
}
Riporto anche l'errore che mi genera:

codice:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: 
String index out of range: 3
	at java.lang.String.charAt(String.java:686)
	at test.Filter.calculation(Filter.java:21)
	at test.Filter.main(Filter.java:39)
Java Result: 1
Mi rivolgo quindi a voi per un aiuto.
Grazie