Esempi di procedure (metodi statici) su array: ricerca sequenziale, copia, uguaglianza, ecc.

...

/**
   crea e restituisce una copia dell'array passato
   come parametro
*/
  public static int[] copia(int[] a) {
    int n = a.length;
    int[] nuovoArray = new int[n];
    for(int i = 0; i < n; i++) {
      nuovoArray[i] = a[i];
    }
    return nuovoArray;
  }

  public static boolean ugualiFor(int[] a, int[] b) {
    int n = a.length;
    if(n != b.length) return false;
    else {
      for(int i = 0; i < n; i++) {
        if(a[i] != b[i]) return false;
      }
      return true;
    }
  }

  public static boolean ugualiForBrutto(int[] a, int[] b) {
    int n = a.length;
    if(n != b.length) return false;
    for(int i = 0; i < n; i++)
      if(a[i] != b[i]) return false;
    return true;
  }

  public static boolean uguali(int[] a, int[] b) {
    int n = a.length;
    if(n != b.length) return false;
    else {
      int i = 0;
      while(i<n && a[i] == b[i]) i++;
      return i==n;
    }
  }

  public static boolean uguali2(int[] a, int[] b) {
    int n = a.length;
    if(n != b.length) return false;
    int i = 0;
    while(i<n && a[i] == b[i]) i++;
    return i==n;
  }



/**
    ricerca sequenziale in un array
*/

/**
  ricerca sequenziale in un array,
  con restituzione di un valore booleano,
  realizzata con il for
*/
  public static boolean ricercaFor(int x, int[] a) {
    int n = a.length;
    for(int i=0; i < n; i++) {
      if(a[i] == x) return true;
    }
    return false;
  }

  public static boolean ricercaForTiger(int x, int[] a) {
    for(int elemento:a) {
      if(elemento == x) return true;
    }
    return false;
  }


/**
    ricerca sequenziale in un array,
    realizzata con un while;
    procedura errata: perché?
*/
  public static boolean ricercaErrata(int x, int[] a) {
    int i = 0;
    int n = a.length;
    while(i < n && a[i] != x) i++;
    return a[i] == x;
  }

  /** NUOVO!
      ricerca sequenziale
      realizzata con un while;
      procedura corretta: perché?
      (Attenzione: la ragione e' sottile ...)
  */
  public static boolean ricerca1(int x, int[] a) {
    int i = 0;
    int n = a.length;
    while(i < n-1 && a[i] != x) i++;
    return a[i] == x;
  }

/**
    ricerca sequenziale
    realizzata con un while;
    altra procedura errata: perché?
*/
  public static boolean ricercaErrata2(int x, int[] a) {
    int i = 0;
    int n = a.length;
    while(a[i] != x && i < n) i++;
    return i < n;
  }

/**
    ricerca sequenziale
    realizzata con un while;
    procedura corretta: perché?
*/
  public static boolean ricerca(int x, int[] a) {
    int i = 0;
    int n = a.length;
    while(i < n && a[i] != x) i++;
    return i < n;
  }


/**
    ricerca sequenziale con restituzione dell'indice,
    realizzata con un while;
*/
  public static int ricercaIndice(int val, int[] a) {
    int i = 0;
    int n = a.length;
    while(i < n && a[i] != val) i++;
    //if(i < n) return i; else return -1;
    return i < n ? i : -1; scrittura alternativa
  }


/**
    ricerca sequenziale in un array, con restituzione dell'indice;
    se il valore cercato non c'è, restituisce -1
*/



  public static int ricercaIndiceFor(int x, int[] a) {
    int n = a.length;
    for(int i=0; i < n; i++) {
      if(a[i] == x) return i;
    }
    return -1;
  }

/**
  restituisce il numero degli elementi dell'array
  che sono uguali a x
*/
  public static int quantiUgualiA(int x, int[] a) {
    int n = a.length;
    int conta = 0;
    for(int i = 0; i < n; i++) {
      if(a[i] == x) conta++;
    }
    return conta;
  }

  public static int quantiUgualiATiger(int x, int[] a) {
    int conta = 0;
    for(int elemento: a) {
      if(elemento == x) conta++;
    }
    return conta;
  }

...