Salve, sto provando a svolgere l'esercizio scrito nei commenti del seguente codice, il compilatore compila il codice che ho creato solo che quando vado ad eseguirlo mi da un errore.
Qualkuno potrebbe aiutarmi ?

Errore che mi da:
codice:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
      at traccia1a.compattaRepliche(traccia1a.java:19)
      at traccia1a.main(traccia1a.java:41)
Questo è il codice:
codice:
/*
Si scriva un metodo compattaRepliche che riceve in ingresso un vettore di interi v, 
e restituisce un vettore di interi w ottenuto riportando in esso i valori presenti 
una sola volta in v e sostituendo gli elementi replicati con la loro somma. 
Per eliminare correttamente le repliche, prima di inserire un elemento 
si suggerisce di controllare se è una replica di uno già considerato. 
Ad  esempio, se v = [ 7, 3, 3, 4, 1, 8, 6, 6, 6, 7] , 
il  vettore restituito è w = [14, 6, 4, 1, 8, 18].
*/

public class traccia1a{
	public static int[] compattaRepliche(int[]v) {
	int []w = new int[v.length];
	int c=0;
	int st=0;
	int pos=0;
	for (int i=0 ; i<v.length ; i++){
		for (int j=v.length ; j>i ; i--){
		if(v[i]==v[j] && c>0){
			st= st+v[j];
			c++;}
		if(v[i]==v[j] && c==0){
			st= v[i]+v[j];
			c++;}
		}
		if(st==0){
		v[i]=w[pos];
		pos++;}
		if(st>0){
		st=w[pos];
		pos++;}
		c=0;
		st=0;
	}
	ridimensiona(w , pos);
	return w;	
	}
	
	public static void main (String[]args) {
	int[] v ={7, 3, 3, 4, 1, 6, 6, 6, 7};
	stampa (compattaRepliche(v));
	}
	
	public static void stampa (int[]v) {
	System.out.println("STAMPO IL NUOVO VETTORE:");
	for (int i=0; i<v.length; i++)
		System.out.print(v[i]+" ");
	}
	
	public static int[] ridimensiona (int[] v, int val) {
	int[] nuovoV= new int[val];
	for (int i=0; i<val ; i++)
	{
		nuovoV[i]= v[i];
	}
	return nuovoV;
	}
}