Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    JAVA-problema con metodo statico

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

  2. #2

    Re: JAVA-problema con metodo statico

    Originariamente inviato da Michael1989
    codice:
    ...
    	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;
    		
    	}
    ...
    Nota che l'array ris ha lunghezza minore o uguale rispetto a quella dell'array a, quindi se ipotizzi una situazione del genere, dove:
    se a = {1, 2, 3}, allora ris.length = 1
    ma il tuo codice tenta di fare questa operazione:
    ris[1] = a[1]
    che sicuramente genera l'errore riscontrato.

  3. #3
    Che errore stupido!! hai pienamente ragione!!!grazie mille della delucidazione!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.