Gestione e modifica di un array in Java con la classe ArrayUtil

/* La classe ArrayUtil fornisce alcuni semplici strumenti per la gestione e modifica di array. Enrico Mensa. */

import java.util.*;



 public class ArrayUtil{

 public static int [] newArray(){ //permette l'inserimento di valori in un array di int

  int [] nuovoarray;

  Scanner input=new Scanner (System.in);
  
  System.out.println("Inserisci la dimensione dell'Array.");
  int n=input.nextInt();
  nuovoarray=new int[n];
  
  for (int i=0;i<nuovoarray.length;i++){
   System.out.println("Inserisci l'elemento ["+i+"] dell'array");
   nuovoarray[i]=input.nextInt();
  }
  

  return nuovoarray;
 }

 public static double [] newDoubleArray(){ //permette l'inserimento di valori in un array di int

  double [] nuovoarray; 

  Scanner input=new Scanner (System.in);
  
  System.out.println("Inserisci la dimensione dell'Array (Double).");
  int n=input.nextInt();
  nuovoarray=new double[n];
  
  for (int i=0;i<nuovoarray.length;i++){
   System.out.println("Inserisci l'elemento ["+i+"] dell'array");
   nuovoarray[i]=input.nextInt();
  }
  

  return nuovoarray; // restituisce il riferimento all'array di int
 }


 public static void printArray(int [] a){ //genera la stampa dei valori di un array di int

  for (int j=0;j<a.length;j++) //stampa l'array
    
    System.out.println("Elemento ["+j+"] dell'array: "+a[j]+".");
 }

 public static void printDoubleArray(double [] a){ //genera la stampa di valori di un array di double

  for (int j=0;j<a.length;j++) 
    
    System.out.println("Elemento ["+j+"] dell'array: "+a[j]+".");
 }



 public static int sumArrayValues (int[] a){ //effettua la somma di tutti gli elementi di un array di int
  int somma=0;
  for (int j=0;j<a.length;j++)
   somma=somma+a[j];
  return somma;
 }


 public static int[] copyArray (int[] a){ //copia valore per valore da un array di int ad un altro
  int[] b= new int[a.length];
  for (int j=0;j<b.length;j++)
   b[j]=a[j];
  return b;
 }


 public static boolean sameArray (int[] a, int[] b){ //controlla se due array di int sono identici e restituisce un boolean
  if (a.length!=b.length)
   return false;
  else{
   for (int j=0;j<a.length;j++){
    if (a[j]!=b[j])
     return false;
   }
   return true;
  }

 }

 /*public static double[] expArray(double[] a, int n) { //effettua l'esponenziale di ogni numero contenuto in un array (con esponente int inserito dall'utente) e ne restituisce uno di double
 for (int i=0;i<a.length;i++)
  a[i]=Matematica.exp(a[i],n);
 return a;
 } */
 
 public static int[] pariArray(int[] array){ //metodo che verifica la presenza o meno di elementi pari in un array e li salva in un array di dimensioni adatta, dopodiché lo restituisce al chiamante
  int n=0;
  int j=0;
  for (int i=0;i<array.length;i++){
   if (array[i]%2==0)
   n++;
  }

   if(n==0){
   System.out.println(" ");
   System.out.println("ATTENZIONE: Non ci sono elementi pari: operazione non riuscita. Verrà generato un array vuoto.");
   }

   int[] solopari=new int[n];
   
   for (int i=0;i<array.length;i++){
    if (array[i]%2==0){
     solopari[j]=array[i];
     j++;
    }
   }

 return solopari;
 
 }

 public static int[] concatArray(int[] a, int[] b){
  
  int[] c=new int[a.length+b.length];
  int k=0;
  for (int i=0;i<c.length;i++){
   if(i<a.length)
    c[i]=a[i];
   else{
    c[i]=b[k];
    k++;
   }
  }
 
 return c;
 
 
 }
 
 public static int[] invertArray(int[] array){ //metodo che inverte di posizione gli elementi di un array
  int j=array.length-1;

   int[] arrayinverso=new int[array.length];
   
   for (int i=0;i<array.length;i++){
    arrayinverso[j]=array[i];
     j--;
    
   }

 return arrayinverso;
 
 }

 public static boolean orderedArray(int[] array) { //metodo che verifica se un array è ordinato o meno, restituendo un boolean
 
  int i=0;
  int b=array[0];
  while(i<array.length){
   if(b>array[i])
     return false;
   b=array[i];
   i++;
  }
  return true; 
 
 }
 
 public static int[] interceptionArray(int[] a, int[] b){ //restituisce gli elementi in comune tra due array
  
 int h=0;
 int k=0; 
  for (int i=0;i<a.length;i++){
   for (int j=0;j<b.length;j++){
    if (a[i]==b[j]){
    k++;
    }
   }
  }
 int[] c=new int[k];
 
  for (int i=0;i<a.length;i++){
   for (int j=0;j<b.length;j++){
    if (a[i]==b[j]){
    c[h]=a[i];
    h++;
    }
   }
  }
 
 
 
 
 return c;
 }
 public static int[] differenceArray(int[] a, int[] b){
  
  int h=0;
  int k=0; 
  boolean diverso = true;
  
  for (int i=0;i<a.length;i++){
   for (int j=0;j<b.length;j++){
    if (a[i]==b[j]){
     diverso=false;
    }
    
   }
   if (diverso){
    k++;
   }
   diverso=true;
   
  }
  
  for (int i=0;i<b.length;i++){
   for (int j=0;j<a.length;j++){
    if (a[j]==b[i]){
     diverso=false;
    }
    
   }
   if (diverso){
    k++;
   }
   diverso=true;
  
  } 
  
  int[] c=new int[k];

  
  for (int i=0;i<a.length;i++){
   for (int j=0;j<b.length;j++){
    if (a[i]==b[j]){
     diverso=false;
    }
    
   }
   if (diverso){
    c[h]=a[i];
    h++;
   }
   diverso=true;
  
  } 
  for (int i=0;i<b.length;i++){
   for (int j=0;j<a.length;j++){
    if (a[j]==b[i]){
     diverso=false;
    }
    
   }
   if (diverso){
    c[h]=b[i];
    h++;
   }
   diverso=true;
  
  }   
  
  return c;
 } 
 
}

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)