il problema è che ho capito come funziona il tutto, mi manca l'esercitazione sugli array.
Faccio l'esempio della prova di esercitazione che avevo oggi:
avevo un metodo con ingresso due vettori p e t. Dovevo controllare se p occorreva in t e creare l'array con la posizione di dove occorreva. Ad esempio con ingresso p={1,2,1} e t={1,2,1,3,1,2,1,2,1} dovevo restituire il vettore di 3 elementi (in quanto p occorre esattamente 3 volte in t) cositituito dagli elementi {0,4,6} che sono gli indici di dove inizia l'occorrenza.
Io stavo riprovando a farlo adesso, ma naturalmente non funziona, comunque posto il codice.
codice:
public static void main(String[] args) {
int[] p = { 1, 2, 1 };
int[] t = { 1, 2, 1, 3, 1, 2, 1, 2, 1 };
occorrenze(t, p);
}
static int[] occorrenze(int[] t, int[] p) {
int lt = t.length;
int lp = p.length;
int count = 0;
int lunghezza = 0;
int k = 0;
int[] arrayRestituito = new int[lt];
int i =0;
for (int j = 0; j < lt; j++) {
if (p[i] == t[j]) {
lunghezza++;
i++;
} else {
i = 0;lunghezza=0;
}
if (lunghezza == lp) {
arrayRestituito[k] = (j - (lp - 1));
k++;lunghezza = 0;i = 0;j=j-1;count++;
}
}
arrayRestituito = new int[count];
i =0;lunghezza=0;k=0;
for (int j = 0; j < lt; j++) {
if (p[i] == t[j]) {
lunghezza++;
i++;
} else {
i = 0;lunghezza=0;
}
if (lunghezza == lp) {
arrayRestituito[k] = (j - (lp - 1));
k++;lunghezza = 0;i = 0;j=j-1;count++;
}
}
for(int l=0;l<arrayRestituito.length;l++){
System.out.print(" "+arrayRestituito[l]);
}
return arrayRestituito;
}
}
EDIT:
Ora funziona. Ma la soluzione fa veramente schifo. 
Comunque secondo me quello che mi manca sono migliaia e migliaia di esercizi, in modo da imparare bene a lavorare sugli array.
Perche questo esercizio oggi in laboratorio non mi tornava, mentre adesso si. Devo anche ammettere che adesso l'ho fatto con il debug, mentre in laboratorio in sede di esame non ce lo fanno usare il debug..