Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Limiti array
Forum - Java - Limiti array

Avatar
Distruttor (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/12/2012

Segnala al moderatore
Postato alle 11:55
Mercoledì, 04/09/2013
Salve ho creato una classe che mi permetta di scrivere delle funzioni per caricare un array di interi tramite tastiera e leggerli poi a console.
Ecco la classe dove ho messo le funzioni....

Codice sorgente - presumibilmente Java

  1. import java.io.IOException;
  2. import java.io.*;
  3.  
  4.  
  5. public class Vettore {
  6.        
  7.  
  8.        
  9.         static public InputStreamReader tastiera = new InputStreamReader(System.in);
  10.        
  11.         static public BufferedReader buffertastiera = new BufferedReader(tastiera);
  12.        
  13.        
  14.         static String rigaletta="";
  15.        
  16.         public static void CaricaArray (int [] array,int elementi) { //il parametro elementi serve per indicare di       quanti "elementi" è composto il vettore.
  17.                
  18.                 int valore=0;
  19.                
  20.        
  21.                
  22.                         try {
  23.                                 for (int i=0; i<elementi;i++){
  24.                                         System.out.println("Inserisci il valore numero " + (i+1));
  25.                                         rigaletta = buffertastiera.readLine();
  26.                                         valore= Integer.parseInt(rigaletta);   
  27.                                         array[i]=valore;
  28.                                        
  29.                                 }
  30.                         } catch (IOException e) {
  31.                                 // TODO Auto-generated catch block
  32.                                 e.printStackTrace();
  33.                         }
  34.                         catch (java.lang.ArrayIndexOutOfBoundsException e){
  35.                                 System.out.println("Vettore finito");
  36.                         }
  37.                         catch (NumberFormatException e){
  38.                                 System.out.println("Devi inserire un numero!");
  39.                         }
  40.                
  41.                
  42.                 }
  43.                
  44.        
  45.  
  46.        
  47.         public static void LeggiArray (int[] array){
  48.                 for (int i=0;i< array.length;i++){
  49.                         System.out.println(array[i]);
  50.                 }
  51.                
  52.         }      
  53.        
  54.        
  55. }




Poi nel main scrivo così

Codice sorgente - presumibilmente Java

  1. int vettore []= new int [4];
  2.  
  3. Vettore.CaricaArray(vettore,5);
  4. Vettore.LeggiArray(vettore);



Tutto bene tranne che non capisco come modificare quel limite  int vettore []= new int [4]; di 4 elementi della dichiarazione.... cioè io in altri linguaggi quali c++, non ho avuto mai problemi nel modificare la grandezza dell'array chiamando la funzione.. ma qui non va, tanto è vero che ho messo pure l'eccezione... come posso risolvere?


PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 12:15
Mercoledì, 04/09/2013
In java un array una volta dimensionato, la sua grandezza non è piu' modificabile. Se ti serve un array "dinamico" puoi sempre usare la classe Vector o ArrayList.

Ultima modifica effettuata da dmr il 04/09/2013 alle 12:17
PM Quote
Avatar
Distruttor (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/12/2012

Segnala al moderatore
Postato alle 13:07
Mercoledì, 04/09/2013
Ok grazie andrò a studiarmi quelle classi... in linea di massima mi potresti dare la soluzione con questi vettori dinamici?? Se ti scoccia no, non me la prendo :)

PM Quote
Avatar
dmr (Normal User)
Pro


Messaggi: 141
Iscritto: 04/01/2012

Segnala al moderatore
Postato alle 15:46
Mercoledì, 04/09/2013
Per esempio va bene anche la classe LinkedList che implementa le liste. Le classi LinkedList, Vector ed ArrayList sono  abbastanza simili, una delle maggiori differenza è la gestione della memoria. L' utilizzo è abbastanza semplice per esempio:
Codice sorgente - presumibilmente Plain Text

  1. LinkedList<Integer> lista=new LinkedList<Integer>();



Con questa linea di codice si alloca lo spazio necessario per creare una lista di numeri interi. Il tipo di dato che la lista deve contenere deve essere racchiusa tra gli operatori < >. Per inserire un valore:

Codice sorgente - presumibilmente Plain Text

  1. lista.add(10);



Se invece devi creare una lista di record puoi creare una classe che deve contenere i dati necessari. Per esempio se devi creare una lista di record che deve contenere un intero e una stringa farai(Si puo' fare in altri modi):

Codice sorgente - presumibilmente Java

  1. public class Record
  2. {
  3.   public int n;
  4.   public String s;
  5. }
  6. LinkedList<Record> record=new LinkedList<Record>();



Comunque ti conviene leggere un manuale per avere una spiegazione molto piu' approfondita.

Ultima modifica effettuata da dmr il 04/09/2013 alle 15:47
PM Quote
Avatar
Distruttor (Normal User)
Newbie


Messaggi: 13
Iscritto: 28/12/2012

Segnala al moderatore
Postato alle 11:37
Giovedì, 05/09/2013
Grazie molte dell'aiuto!

PM Quote