Buongiorno, volevo creare un programma che dati 3 : v1,v2,v3. Restituisce un vettore contenente tutti e solo gli elementi di v1 che sono presenti almeno due volte in v2 e non più di due volte in v3.
Esempio : v1=(4,5) v2=(4,6,4,4) v3=(5,2,4)
Ovviamente il vettore finale sarà : V=(4) .
Ho provato a farlo ma mi da un errore non capisco cosa sia,potete darmi una mano? :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at esempio2.filtra(esempio2.java:19)
at esempio2.main(esempio2.java:7)
codice:public class esempio2{ public static void main(String[]args){ int v1[]={4,5,6,7,9}; int v2[]={4,10,6,7,12,4,6,9}; int v3[]={4,6,10,6,6}; int V[]=filtra(v1,v2,v3); for(int i=0;i<V.length;i++) System.out.println(V[i]+"|"); } public static int[] filtra(int[]v1, int[]v2, int[]v3){ int dimvett=0; for(int i=0;i<v1.length;i++){ int cont1=trova1(v1[i],v2); int cont2=trova2(cont1,v3); if(cont1==cont2 && cont1!=0){ dimvett++; } } int[]vett=new int[dimvett]; int pos=0; for(int i=0;i<v1.length;i++){ int cont1=trova1(v1[i],v2); int cont2=trova2(cont1,v3); if(cont1==cont2 && cont1!=0){ vett[pos]=cont1; pos++; } } return vett; } public static int trova1(int num, int[]v2){ int cont=0; int val=0; for(int i=0;i<v2.length;i++){ if(num==v2[i]){ cont++; if(cont==2){ val=num; return val; } } } return val; } public static int trova2(int num, int[]v3){ int cont=0; int val; for(int i=0;i<v3.length;i++){ if(num==v3[i]){ cont++; } } if(cont<=2) val=num; else val=0; return val; } }
Grazie mille!!

Rispondi quotando


