Help classi extends

di il
13 risposte

Help classi extends

Ciao a tutti.
Sono nuova del forum e avrei bisogno di un vostro aiuto.

Ho due classi Persona e Dipendente. Dipendente è extends di Persona.
Vorrei scrivere su un file di testo sia i dati delle persone che quelle dei dipendenti (che ha 4 campi in più).

Purtroppo il programma che ho predisposto riesce a scrivermi solo i campi che sono presenti in Persona e non mi scrive quelli aggiuntivi del dipendente.


Avete per caso degli esempi di scrittura e lettura su file di record relativi a due classi di cui una è extends?

Grazie.
Chiara

13 Risposte

  • Re: Help classi extends

    khicca77 ha scritto:


    Ho due classi Persona e Dipendente. Dipendente è extends di Persona.
    Vorrei scrivere su un file di testo sia i dati delle persone che quelle dei dipendenti (che ha 4 campi in più).

    Purtroppo il programma che ho predisposto riesce a scrivermi solo i campi che sono presenti in Persona e non mi scrive quelli aggiuntivi del dipendente.
    La questione è molto semplice. Anche se non hai postato alcun codice, non è difficile intuire quello che hai fatto. Se hai fatto un array Persona[] o una "collezione" es. List<Persona> questi possono chiaramente contenere sia oggetti Persona, sia oggetti Dipendente. Questo è dovuto alla ereditarietà, non è questo il punto.

    La questione spinosa è che da questi, array o collezione che sia, se estrai un oggetto, lo puoi "vedere" solo come Persona che è il tipo dell'array o la parametrizzazione della collezione. E vedendo solo come Persona, NON puoi vedere membri (campi o metodi) che sono specifici delle sottoclassi.

    Ora, ci sono diverse soluzioni. Quella banale ma "brutta" (meno bella dal punto di vista OOP) cioè l'operatore instanceof che permette di sapere se un oggetto passa il test IS-A ("è-un") rispetto ad un certo tipo.

    if (persone instanceof Dipendente)

    allora l'oggetto i-esimo nell'array è realmente una istanza di Dipendente, quindi puoi fare un cast al tipo specifico e quindi "vedere" i suoi membri specifici.

    Un'altra soluzione che sfrutta meglio la OOP. Pensa un po': e se fosse ciascun oggetto a fornirti un elenco di valori che puoi poi scrivere nel file? Cioè un singolo metodo che è noto ed implementato in Persona e poi ridefinito in Dipendente.
  • Re: Help classi extends

    Ciao.
    Grazie mille per la tua risposta.
    Mi incuriosisce la seconda soluzione che mi hai scritto.
    Vuol dire che sia in Persona che in Dipendente dovrei scrivere un metodo che mi elenchi quali sono i suoi elementi?
    Se si devo farne due uno per assegnare i valore e uno per leggerli?
  • Re: Help classi extends

    khicca77 ha scritto:


    Vuol dire che sia in Persona che in Dipendente dovrei scrivere un metodo che mi elenchi quali sono i suoi elementi?
    Se si devo farne due uno per assegnare i valore e uno per leggerli?
    Prima precisa quale è il formato esatto del file di testo da gestire. Perché questo in un certo senso "pilota" la scelta del design da utilizzare.
  • Re: Help classi extends

    Posto il codice di definizione delle due classi e la parte di rubrica che dovrebbe scrivermi su file il tipo dipendente.
    public class Persona {
    
      // Attributi
      private String tipo;
      private String nome;
      private String cognome;
      private String num_ufficio;
      private String via;
      private int cap;
      private String citta;
      private String note;
    
      // Costruttore
      public Persona(String tipo, 
    				 String nome,
                     String cognome,
    				 String num_ufficio,
    				 String via,
                     int    cap,
    				 String citta,
                     String  note)
      {
        this.tipo = tipo;
    	this.nome = nome;
        this.cognome = cognome;
        this.num_ufficio = num_ufficio;
        this.via = via;
        this.cap = cap;
        this.citta = citta;
        this.note = note;
    	
      }
      
      public class Dipendente extends Persona {
    
      // Attributi
      private String num_casa;
      private String num_cellulare;
      private String user;
      private String password;
    
        // Costruttore
        public Dipendente(String tipo, String nome, String cognome, String num_ufficio, 
    	                  String via, int cap, String citta, String note) {
            super (tipo, nome, cognome, num_ufficio, via, cap, citta, note);
            num_casa="";
            num_cellulare="";
            user="";
            password="";
        }
      class Rubrica {
      // Attributi
      private Vector<Persona> Clienti;
      private Vector<Dipendente> Dipendenti;
      private String nome_rubrica;
     
    
      public static void main(String args[])
      {
    	Rubrica r = new Rubrica("rubrica.txt");
    	Scanner t = new Scanner(System.in);
    	System.out.print("Inserire user: \n");
        String user = t.nextLine();
    	System.out.print("Inserire password: \n");
        String password = t.nextLine();
    	if (r.login(user,password) == false) 
    	{
    		System.out.print("Inserisci i tuoi dati: \n");
    		System.out.print("nome: \n");
    		String nome = t.nextLine();
    		System.out.print("cognome: \n");
    		String cognome = t.nextLine();
    		System.out.print("numero ufficio: \n");
    		String num_ufficio = t.nextLine();
    		System.out.print("numero casa: \n");
    		String num_casa = t.nextLine();
    		System.out.print("numero cellulare: \n");
    		String num_cellulare = t.nextLine();
    		System.out.print("Via: \n");
    		String via = t.nextLine();
    		System.out.print("CAP: \n");
    		int cap = t.nextInt();
    		System.out.print("Citta: \n");
    		String citta = t.nextLine();
    		System.out.print("Note: \n");
    		String note = t.nextLine();
    		System.out.print("username: \n");
    		user = t.nextLine();
    		System.out.print("password: \n");
    		password = t.nextLine();
    		Dipendente d = new Dipendente("D", nome, cognome, num_ufficio, via, cap, citta, note);
    		d.impostaTelefonoD(num_casa, num_cellulare);
    		d.impostaUser(user, password);
    		r.aggiungiDipendente(d);
        }
        
        public boolean aggiungiDipendente(Dipendente d)
      {
        if (Dipendenti.contains(d))
    	{
    	   System.out.println(d + "già presente nella rubrica");
    	   return false;
    	}
        Dipendenti.addElement(d);
    	salvaDipendenti();
    	System.out.println("Aggiunto" + d + "alla rubrica");
    	return true;
      }
      public void salvaDipendenti() 
      {
         try
    	 {
    	    //FileOutputStream fout = new FileOutputStream(nome_rubrica);
    		System.out.println("Passo1");
    		//PrintWriter ds = new PrintWriter(fout, true);
    		FileWriter fout = new FileWriter(nome_rubrica, true);
    		PrintWriter ds = new PrintWriter(fout);
    		System.out.print(Dipendenti.size());
    	
    	
    		for (int i=0; i < Dipendenti.size();i++) ds.println(Dipendenti.elementAt(i));
    		ds.close();
    		fout.close();
    	 } catch (IOException e)
    	   {
    	      e.printStackTrace();
    		  System.exit(1);
    	   }
       }
      	
        
  • Re: Help classi extends

    Io avrei scelto un file txt con separatore campi il tab \t.
    Ma essendo nuova della programmazione java accetto qualsiasi consiglio.
  • Re: Help classi extends

    khicca77 ha scritto:


    Posto il codice di definizione delle due classi e la parte di rubrica che dovrebbe scrivermi su file il tipo dipendente.
    Il codice è un po' ... pasticciato (e incompleto ma forse hai abbreviato volutamente). Posso darti alcune indicazioni abbastanza veloci:
    - non usare "_" nei nomi (vale in generale)
    - i nomi di metodi e variabili dovrebbero iniziale con la minuscola

    Poi la cosa dubbia è quel doppio Vector:

    private Vector<Persona> Clienti;
    private Vector<Dipendente> Dipendenti;

    Se devi distinguere clienti dai dipendenti per motivi di "logiche" differenti di utilizzo, allora è un conto. Altrimenti non va bene.

    Ah, conosci i concetti di overload e override? Sono fondamentali e per fare quanto dicevo, serve il override.

    Inizia comunque a rivedere un po' meglio tutto il codice.
  • Re: Help classi extends

    Grazie mille per i tuoi prezioni suggerimenti. Scusa tanto per il codice pasticciato ma sono i miei primi programmi e io uso altri linguaggi normalmente.
    Si conosco la differenza tra overload e overrid (almeno credo).
    Overload quando ridefinisco metodi con stesso nome ma numero di parametri diversi;
    Overrid riderifisco un metodo della super classe nella sottoclasse (stesso nome e stessi parametri) Giusto?????
    Posto qui di seguito il codice rivisto. Il doppio vettore è dovuto al fatto che non riesco a gestire i dati aggiuntivi se poi ci riesco non credo mi serviranno.
    Ti sarei davvero grata per qualsiasi suggerimento e aiuto mi puoi dare.
    
    ****Persona.java
    public class Persona {
    
      // Attributi
      private String tipo;
      private String nome;
      private String cognome;
      private String numUfficio;
      private String via;
      private int cap;
      private String citta;
      private String note;
    
      // Costruttore
      public Persona(String tipo, 
    				 String nome,
                     String cognome,
    				 String numUfficio,
    				 String via,
                     int    cap,
    				 String citta,
                     String note)
      {
        this.tipo = tipo;
    	this.nome = nome;
        this.cognome = cognome;
        this.numUfficio = numUfficio;
        this.via = via;
        this.cap = cap;
        this.citta = citta;
        this.note = note;
    	
      }
    
      // Metodi classe Persona
      public void impostaNome(String nome, String cognome)
      {
        this.nome = nome;
        this.cognome = cognome;
      }
      public void impostaIndirizzo(String Indirizzo, int cap, String citta)
      {
        this.via = via;
        this.cap = cap;
        this.citta = citta;
      }
      public void impostaNumUfficio(String numUfficio)
      {
        this.numUfficio = numUfficio;
      }
      public void impostaTipo(String tipo)
      {
        this.tipo = tipo;
      }
    
      // Metodi di interrogazione della classe Persona
      public String restituisciNome()
      {
        return this.nome;
      }
      public String restituisciCognome()
      {
        return this.cognome;
      }
      public String restituisciNumeroUff()
      {
        return this.numUfficio;
      }
      public String restituisciIndirizzo()
      {
        return (this.via + "\t" + this.cap + "\t" + this.citta);
      }
        public String restituisciNote()
      {
        return this.note;
      }
      
      public boolean equals(Object obj) 
      {
        return (obj instanceof Persona)
            	&& ((Persona)obj).equals(nome)
    			&& ((Persona)obj).equals(cognome);
      }
    }
    *******Dipendente.java
    import java.io.*;
    
    public class Dipendente extends Persona {
    
      // Attributi
      private String numCasa;
      private String numCellulare;
      private String user;
      private String password;
    
        // Costruttore
        public Dipendente(String tipo, String nome, String cognome, String numUfficio, 
    	                  String via, int cap, String citta, String note) {
            super (tipo, nome, cognome, numUfficio, via, cap, citta, note);
            numCasa="";
            numCellulare="";
            user="";
            password="";
        }
      
      // Metodi di impostazione della classe Dipendente
      public void impostaUser(String user, String password)
      {
        this.user = user;
        this.password = password;
      }
      public void impostaTelefonoD(String numCasa, String numCellulare)
      {
        this.numCasa = numCasa;
        this.numCellulare = numCellulare;
      }
      // Metodi di interrogazione della classe dipendente
      public String restituisciNumCasa()
      {
        return this.numCasa;
      }
      public String restituisciNumCell()
      {
        return this.numCellulare;
      }
      public String restituisciNumeri()
      {
        return (this.numCasa + "\t" + this.numCellulare);
      }
    	public String restituisciUser()
      {
        return this.user;
      }
      public String restituisciPassword()
      {
        return this.password;
      }
      public boolean equals(Object obj) 
      {
        return (obj instanceof Dipendente)
            	&& ((Dipendente)obj).equals(user)
    			&& ((Dipendente)obj).equals(password);
      }
      
    }
    ******Rubrica.java
    import java.io.*;
    import java.util.*;
    
    
    class Rubrica {
      // Attributi
      private Vector<Persona> Clienti;
      private Vector<Dipendente> Dipendenti;
      private String nome_rubrica;
     
    
      public static void main(String args[])
      {
    	Rubrica r = new Rubrica("rubrica.txt");
    	Scanner t = new Scanner(System.in);
    	System.out.print("Inserire user: \n");
        String user = t.nextLine();
    	System.out.print("Inserire password: \n");
        String password = t.nextLine();
    	if (r.login(user,password) == false) 
    	{
    		System.out.print("Inserisci i tuoi dati: \n");
    		System.out.print("nome: \n");
    		String nome = t.nextLine();
    		System.out.print("cognome: \n");
    		String cognome = t.nextLine();
    		System.out.print("numero ufficio: \n");
    		String numUfficio = t.nextLine();
    		System.out.print("numero casa: \n");
    		String numCasa = t.nextLine();
    		System.out.print("numero cellulare: \n");
    		String numCellulare = t.nextLine();
    		System.out.print("via: \n");
    		String via = t.nextLine();
    		System.out.print("cap: \n");
    		int cap = t.nextInt();
    		System.out.print("citta: \n");
    		String citta = t.nextLine();
    		System.out.print("note: \n");
    		String note = t.nextLine();
    		System.out.print("username: \n");
    		user = t.nextLine();
    		System.out.print("password: \n");
    		password = t.nextLine();
    		Dipendente d = new Dipendente("D", nome, cognome, numUfficio, via, cap, citta, note);
    		d.impostaTelefonoD(numCasa, numCellulare);
    		d.impostaUser(user, password);
    		r.aggiungiDipendente(d);
        }	
    	if (r.login(user,password) == false) 
    	{
    		int scelta = 0;
    		while (scelta != 3)
    		{
    			System.out.print("0-Lista Contatti, 1-Inserisci Cliente, 2-Ricerca, 3-Esci: ");
    			scelta = t.nextInt();
    			if (scelta == 0)
    			{
    			}		
    			if (scelta == 1) 
    			{
    				System.out.print("Inserisci i dati Cliente: \n");
    				System.out.print("nome: \n");
    				String nome = t.nextLine();
    				System.out.print("cognome: \n");
    				String cognome = t.nextLine();
    				System.out.print("numero ufficio: \n");
    				String numUfficio = t.nextLine();
    				System.out.print("via: \n");
    				String via = t.nextLine();
    				System.out.print("cap: \n");
    				int cap = t.nextInt();
    				System.out.print("citta: \n");
    				String citta = t.nextLine();
    				System.out.print("note: \n");
    				String note = t.nextLine();
    				Persona p = new Persona("C", nome, cognome, numUfficio, via, cap, citta, note);
    				r.aggiungiCliente(p);
    			}
    			if (scelta == 2)
    			{
    				System.out.print("Vuoi cercare tra C-Clienti o D-Dipendenti?: \n");
    				String tipoCercato = t.nextLine();
    				System.out.print("nome da cercare: \n");
    				String nomeCercato = t.nextLine();
    				System.out.print("cognome da cercare: \n");
    				String cognomeCercato = t.nextLine();
    				r.printnumber(tipoCercato, nomeCercato, cognomeCercato);
    			}
    		}
    	}
      }	
      // Costruttore
       public Rubrica(String nome_file) {
        Clienti = new Vector<Persona>();
        Dipendenti = new Vector<Dipendente>();
    	nome_rubrica = nome_file;
    	
    	//Leggiamo la rubrica dal file
        FileReader fin = null;
        try {
    	      fin = new FileReader(nome_file);
    		  BufferedReader inFile = new BufferedReader(fin);
    		  String record = inFile.readLine();
    		  while(record != null) {
    			 //System.out.println(record);
    		     //String tipo = record.substring(0,record.indexOf('\t'));
    			 //String r = record.substring(record.indexOf('\t')+1,record.lenght());
    			 //String nome = r.substring(0,r.indexOf('\t'));
    			 //String cognome = r.substring(r.indexOf('\t')+1,r.lenght());
    			 //String r1 = record.substring(record.indexOf('\t')+1,r1.lenght());
    			 //String num_uff = r1.substring(0,r1.indexOf('\t'));
    
    			int inizio = 0;
    			int pos = record.indexOf ('\t');
    			String tipo = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String nome = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String cognome = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String num_uff = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String via = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String capa = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String citta = record.substring(inizio, pos);
    			inizio = pos + 1;
    			pos = record.indexOf ('\t', inizio);
    			String note = record.substring(inizio, pos);
    			if (tipo == "C") {
    				int cap = Integer.parseInt(capa);
    				Persona p = new Persona(tipo,nome,cognome,num_uff,via,cap,citta,note);
    				System.out.println("Letto" + p);
    				Clienti.add(p);
    			} else {
    				inizio = pos + 1;
    				pos = record.indexOf ('\t', inizio);
    				String numCasa = record.substring(inizio, pos);
    				inizio = pos + 1;
    				pos = record.indexOf ('\t', inizio);
    				String numCellulare = record.substring(inizio, pos);
    				inizio = pos + 1;
    				pos = record.indexOf ('\t', inizio);
    				String user = record.substring(inizio, pos);
    				inizio = pos + 1;
    				pos = record.indexOf ('\t', inizio);
    				String password = record.substring(inizio, pos);
    				int cap = Integer.parseInt(capa);
    				Dipendente d = new Dipendente(tipo,nome,cognome,num_uff,via,cap,citta,note);
    				d.impostaTelefonoD(numCasa,numCellulare);
    				d.impostaUser(user,password);
    				System.out.println("Letto" + d);
    				Dipendenti.add(d);
    			}
    			record = inFile.readLine();
    			
      	      }	
               fin.close();
    		} catch (FileNotFoundException e)
    		 {
    		    //File non esiste la rubrica è vuota
    			System.out.println("La rubrica non esiste");
    		 } catch (IOException e2)
    		   {
    		      e2.printStackTrace();
    			  System.exit(1);
    		   }
      }
      
      public boolean aggiungiCliente(Persona p)
      {
        if (Clienti.contains(p))
    	{
    	   System.out.println(p + "già presente nella rubrica");
    	   return false;
    	}
        Clienti.addElement(p);
    	salvaContatti();
    	System.out.println("Aggiunto" + p + "alla rubrica");
    	return true;
      }
      public boolean aggiungiDipendente(Dipendente d)
      {
        if (Dipendenti.contains(d))
    	{
    	   System.out.println(d + "già presente nella rubrica");
    	   return false;
    	}
        Dipendenti.addElement(d);
    	salvaDipendenti();
    	System.out.println("Aggiunto" + d + "alla rubrica");
    	return true;
      }
      
      public void printnumber(String tipo, String nome, String cognome)
      { 
        if (tipo == "C") {
           Persona p1 = new Persona(tipo, nome, cognome, "", "", 0, "", "");
    	   if (Clienti.contains(p1)) System.out.println("Il numero di " + p1 + "e\' " +
    	       Clienti.elementAt(Clienti.indexOf(p1)).restituisciNumeroUff());
    		   else System.out.println(p1 + " non presente nella rubrica");
    	}	   
        if (tipo == "D") {
           Dipendente d1 = new Dipendente(tipo, nome, cognome, "", "", 0, "", "");
    	   d1.impostaTelefonoD("", "");
    	   d1.impostaUser("", "");
    	   if (Dipendenti.contains(d1)) System.out.println("Il numero di " + d1 + "e\' " +
    	       Dipendenti.elementAt(Dipendenti.indexOf(d1)).restituisciNumeri());
    		   else System.out.println(d1 + " non presente nella rubrica");
    	}	   
      }  
      public boolean login(String user, String password)
      { 
        Dipendente d1 = new Dipendente("D", "", "", "", "", 0, "", "");
    	d1.impostaTelefonoD("","");
    	d1.impostaUser(user, password);
        if (Dipendenti.contains(d1)) {
    	    return true;
    	}  else return false;
    		   
      }  
      
      public void salvaContatti() 
      {
         try
    	 {
    	    //FileOutputStream fout = new FileOutputStream(nome_rubrica);
    		System.out.println("Passo");
    		//PrintWriter ps = new PrintWriter(fout, true);
    		FileWriter fout = new FileWriter(nome_rubrica, true);
    		PrintWriter ps = new PrintWriter(fout);
    		for (int i=0; i < Clienti.size();i++) ps.println(Clienti.elementAt(i));
    		ps.close();
    		fout.close();
    	 } catch (IOException e)
    	   {
    	      e.printStackTrace();
    		  System.exit(1);
    	   }
       }
      public void salvaDipendenti() 
      {
         try
    	 {
    	    //FileOutputStream fout = new FileOutputStream(nome_rubrica);
    		System.out.println("Passo1");
    		//PrintWriter ds = new PrintWriter(fout, true);
    		FileWriter fout = new FileWriter(nome_rubrica, true);
    		PrintWriter ds = new PrintWriter(fout);
    		System.out.print(Dipendenti.size());
    	
    	
    		for (int i=0; i < Dipendenti.size();i++) ds.println(Dipendenti.elementAt(i));
    		ds.close();
    		fout.close();
    	 } catch (IOException e)
    	   {
    	      e.printStackTrace();
    		  System.exit(1);
    	   }
       }
      
    }
    
  • Re: Help classi extends

    khicca77 ha scritto:


    Overload quando ridefinisco metodi con stesso nome ma numero di parametri diversi;
    Overrid riderifisco un metodo della super classe nella sottoclasse (stesso nome e stessi parametri) Giusto?????
    Sì, detto così è corretto.

    Se nel file txt ogni oggetto dovrà essere rappresentato da una riga di testo, puoi fare in modo che ciascun oggetto ti fornisca la stringa con la riga già formattata e appropriata per il file. Chiaramente sarebbe meglio che ciascuna riga sia ben "marchiata" riguardo il tipo (non so ... un prefisso particolare a inizio riga), perché poi sarà utile nella rilettura (se dovrai gestirlo).

    E quando dico "ciascun oggetto ti fornisca la stringa" ... pensa al override.
  • Re: Help classi extends

    Il prefisso c'è già. La variabile tipo della classe Persona serve proprio a quello.
    Ok a logica adesso credo di aver capito, in Persona metterò un metodo che formatta e deformatta la stringa per i Clienti e in Dipendente metterò un metodo che formatta e deformatta la stringa per i dipendenti. Giusto?
    Il problema è ..... come devo farlo? Come costruisco una stringa e soprattutto come la deformatto? Va bene quello che ho usato in Rubrica?
  • Re: Help classi extends

    khicca77 ha scritto:


    Il prefisso c'è già. La variabile tipo della classe Persona serve proprio a quello.
    Di per sé non servirebbe (se non è per altri motivo che ora potrei ignorare ..)

    khicca77 ha scritto:


    in Persona metterò un metodo che formatta e deformatta la stringa per i Clienti e in Dipendente metterò un metodo che formatta e deformatta la stringa per i dipendenti. Giusto?
    Sì e no. La formattazione è banale, concateni i campi con separatori, ecc.. e restituisci la stringa. Il contrario è meno banale. Quando leggi una riga dal file, non sai a priori di che tipo è. Potresti testarlo tu al di fuori delle classi Persona/Dipendente: se una riga inizia con es. "PERS" allora è un oggetto Persona. Questo è ok tecnicamente. Ma se fai così, metti la logica di gestione del formato un po' nelle due classi (per la formattazione) e un po' fuori (per la decodifica).

    A quel punto, sarebbe meglio che ciascuna classe abbia un metodo statico che effettua il parsing della riga e se riconosce il tipo giusto ti fornisce la istanza, altrimenti null.

    P.S. E invece di usare indexOf potresti usare lo split di String.
  • Re: Help classi extends

    Ok grazie mille domani mattina ci provo.
    Grazie.
  • Re: Help classi extends

    Buongiorno.
    Grazie ai tuoi consigli ho ottenuto parecchio.
    Ora però sto litigando con un array.

    Ho definito l'array String[] lista = new String[100];
    però poi nei vari metodi quando cerco di usare lista.lenght in fase di compilazione mi da errore "cannot find symbol indicandomi il punto tra lista e lenght.
    Sai aiutarmi?
    Esempio:
    
    for (int i = 0;i<lista.lenght;i++)
    {
         System.out.println(lista[i]);
    }
    
  • Re: Help classi extends

    Length
Devi accedere o registrarti per scrivere nel forum
13 risposte