E' il secondo for che va in errore.
Nell'ultimo ciclo esterno i punterà all'ultima posizione utile nell'array (se N vale 3, allora i vale 2 e punti[2] è l'ultima posizione utile). Nel secondo for, la prima cosa che fa è valorizzare x come i + 1 e questo genera l'errore (punti[2] - punti[3], ma punti è un array di 3 elementi e non esiste punti[3]!).

La soluzione del problema consiste semplicemente di aggiungere un -1 nel primo for:
codice:
for(int i=0; i<n-1; i++){
	for(int x=i+1; x<n; x++){
		double sott = Math.abs(punti[i]-punti[x]);
		sottr[puntatore] = sott;
		puntatore++;
}
}
Ed è la soluzione corretta: per tutti i valori dell'array tranne l'ultimo, effettua la differenza fra il valore e tutti i suoi successivi (tranne l'ultimo perchè non ha alcun successivo).


Ciao.