Ciao a tutti!!! ho un problema quando invoco un metodo statico!!vi posto il codice e poi spiego cosa dovrebbe fare!!
codice:
import java.util.Random;
import jbook.util.Input;
public class MetodiStatici5 {
public static int [] getPari(int [] a){
int count=0;
for(int i=0; i<a.length;i++){
if(a[i]%2==0){
count++;
}
}
int [] ris= new int [count];
for(int i=0; i<a.length-1; i++){
if(a[i]%2==0){
ris[i]=a[i]; // riga 21 ERRORE
}
}
return ris;
}
public static int sommaAlterna(int []a){
int ris=0;
int [] check=new int [a.length];
for(int i=0; i<a.length;i++){
if(i%2==0){
check[i]=a[i];
}else{
check[i]=-a[i];
}
}
for(int i=0;i<check.length;i++){
ris+=check[i];
}
return ris;
}
public static void main (String [] args){
int n=Input.readInt("inserisci lunghezza array");
int [] a=new int [n];
Random generatore=new Random(10);
for(int i=0;i<a.length;i++){
a[i]=generatore.nextInt(10);
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]+" ");
}
for(int i=0;i<(getPari(a)).length;i++){ //riga 61 ERRORE
System.out.print(getPari(a)[i]+" ");
}
System.out.println(sommaAlterna(a));
}
}
il metodo getPari() prende come parametro un'array di interi e restituisce un nuovo array composto solo dagli elementi in posizione pari, il metodo sommaAlterna() prende come parametro un'array di interi e restituisce la somma alterna degli elementi dell'array(es:dato l'array [3,6,8,23,4] restiuisce 3-6+8-23+4 = -14)
e nel main si prende in input un numero n e si crea un'array con n numeri interi random utilizzando java.util.Random, e invoco i metodi
l'errore ke mi da eclipse è : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 7
at provaCompitoLaboratorio.MetodiStatici5.getPari(Met odiStatici5.java:21)
at provaCompitoLaboratorio.MetodiStatici5.main(Metodi Statici5.java:61)
non capisco proprio perchè mi dia questo tipo di errore!!dovrebbe andare tranquillamente!!