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:
Questo è il codice:codice:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9 at traccia1a.compattaRepliche(traccia1a.java:19) at traccia1a.main(traccia1a.java:41)
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; } }

Rispondi quotando
