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!!