Pages: [1]   Go Down
Print
Author Topic: Applicazioni persona  (Read 1672 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« on: 04-04-2009, 08:29:41 »

Ho fatto l'esercizio sui record di tipo Persona..sembra tutto funzionante tranne l'ultimo punto perchè se nella condizione del for metto aux!=null giustamente mi genera una NullPointerException se metto invece aux.getNext()!=null non aggiunge l'ultimo elemento.. e non capisco come risolvere...
Code:
/*Creare 1000 record di tipo Persona e scriverli in un file di Object appropriato*/
import java.io.*;
public class ApplicazioniPersona
{
public static void main (String[] args)
{
Persona[] p=new Persona [5];
String[] n={"Mario","Luisa","Carlo","Sara","Sandra"};
String[] c={"Rossi","Romania","Conti","Vacanti","Mondaini"};
for(int i=0;i<p.length;i++)
p[i]=new Persona(n[i],c[i]);
try
{
File f=new File ("Persone.txt");
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oos=new ObjectOutputStream(fos);
for(int i=0;i<p.length;i++)
oos.writeObject(p[i]);
oos.close();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
/*Caricare i record dal file ed nserirli in una lista dinamica*/
ListaLinkata l=new ListaLinkata();
try
{
File f=new File ("Persone.txt");
FileInputStream fis=new FileInputStream(f);
ObjectInputStream ois=new ObjectInputStream(fis);
while(true)
try
{
l.inserisciCoda((Persona)ois.readObject());
}
catch(EOFException e)
{
System.out.println();
break;
}
}

catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
catch(ClassNotFoundException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
l.stampa();
/*Estrarre tutti gli elementi di posto pari e conservarli in un primo file*/
try
{
File pa=new File ("Pari.txt");
FileOutputStream fos1=new FileOutputStream(pa);
ObjectOutputStream oos1=new ObjectOutputStream(fos1);
for(Nodo aux=l.getTesta().getNext();aux!=null;aux=aux.getNext().getNext())
{
try
{
oos1.writeObject(aux.getInfo());
oos1.flush();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}

/*Estrarre tutti gli elementi di posto dispari e conservarli in un secondo file*/
try
{
File di=new File ("Dispari.txt");
FileOutputStream fos2=new FileOutputStream(di);
ObjectOutputStream oos2=new ObjectOutputStream(fos2);
for(Nodo aux=l.getTesta();aux!=null&&aux.getNext()!=null;aux=aux.getNext().getNext())
{
try
{
oos2.writeObject(aux.getInfo());
oos2.flush();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
catch(NullPointerException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #1 on: 05-04-2009, 10:55:59 »

vivinzy da quello che ho capito io si deve creare una classe oggetto;poi fare un file dove metti delle persone.credo che in java ci sia una classe che si chiami fileobject.cmq non ho capito bene come si usa.Negli altri post si parlava di come creare un file di oggetti.puoi vedere lì se sono riusciti a risolvere.
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
djjeck
Matricola
*
Offline Offline

Gender: Male
Posts: 89


Ho una donna nuda per avatar. Non c'era di meglio.


WWW
« Reply #2 on: 05-04-2009, 13:01:31 »

Effettua l'incremento un passo alla volta (e quindi non nel campo del for, ma alla fine del suo body):

Code:
aux = aux.getNext();
if(aux != null)
  aux = aux.getNext();
Logged
thomas89
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 341



« Reply #3 on: 14-04-2009, 11:53:23 »

Ho fatto l'esercizio sui record di tipo Persona..sembra tutto funzionante tranne l'ultimo punto perchè se nella condizione del for metto aux!=null giustamente mi genera una NullPointerException se metto invece aux.getNext()!=null non aggiunge l'ultimo elemento.. e non capisco come risolvere...
Code:
/*Creare 1000 record di tipo Persona e scriverli in un file di Object appropriato*/
import java.io.*;
public class ApplicazioniPersona
{
public static void main (String[] args)
{
Persona[] p=new Persona [5];
String[] n={"Mario","Luisa","Carlo","Sara","Sandra"};
String[] c={"Rossi","Romania","Conti","Vacanti","Mondaini"};
for(int i=0;i<p.length;i++)
p[i]=new Persona(n[i],c[i]);
try
{
File f=new File ("Persone.txt");
FileOutputStream fos=new FileOutputStream(f);
ObjectOutputStream oos=new ObjectOutputStream(fos);
for(int i=0;i<p.length;i++)
oos.writeObject(p[i]);
oos.close();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
/*Caricare i record dal file ed nserirli in una lista dinamica*/
ListaLinkata l=new ListaLinkata();
try
{
File f=new File ("Persone.txt");
FileInputStream fis=new FileInputStream(f);
ObjectInputStream ois=new ObjectInputStream(fis);
while(true)
try
{
l.inserisciCoda((Persona)ois.readObject());
}
catch(EOFException e)
{
System.out.println();
break;
}
}

catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
catch(ClassNotFoundException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
l.stampa();
/*Estrarre tutti gli elementi di posto pari e conservarli in un primo file*/
try
{
File pa=new File ("Pari.txt");
FileOutputStream fos1=new FileOutputStream(pa);
ObjectOutputStream oos1=new ObjectOutputStream(fos1);
for(Nodo aux=l.getTesta().getNext();aux!=null;aux=aux.getNext().getNext())
{
try
{
oos1.writeObject(aux.getInfo());
oos1.flush();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}

/*Estrarre tutti gli elementi di posto dispari e conservarli in un secondo file*/
try
{
File di=new File ("Dispari.txt");
FileOutputStream fos2=new FileOutputStream(di);
ObjectOutputStream oos2=new ObjectOutputStream(fos2);
for(Nodo aux=l.getTesta();aux!=null&&aux.getNext()!=null;aux=aux.getNext().getNext())
{
try
{
oos2.writeObject(aux.getInfo());
oos2.flush();
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}
catch(IOException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
catch(NullPointerException e)
{
System.out.println("Si è generata un'eccezione: "+e);
}
}
}

anke io lo faccio così l'esercizio.. ma nn capisco xkè già all'inizio del codice qnd inserisco l'object nel file persona.txt mi da un errore del tipo "java.io.NotSerializableException: Persona".. nn capisco il xkè cavolo 
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.
Vivynz
Forumista Eroico
*****
Offline Offline

Gender: Female
Posts: 2.033


File reality.sys corrupted, Reboot Universe? Y/N


« Reply #4 on: 14-04-2009, 14:08:07 »

anke io lo faccio così l'esercizio.. ma nn capisco xkè già all'inizio del codice qnd inserisco l'object nel file persona.txt mi da un errore del tipo "java.io.NotSerializableException: Persona".. nn capisco il xkè cavolo 
perchè la classe persona deve implementare l'interfaccia serializable..leggi le slide..
Logged

L'odrine delle lttere dnetro una praorla non è ipmortatne, la sloa cosa ipmortatne è che la pmria e l'utlima ltteera sinao nel potso giutso. Il rseto può essree in un dsiodrine più totlae e voi ptoerte smerpe lggeree sneza porblmea.
thomas89
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 341



« Reply #5 on: 14-04-2009, 14:18:33 »

Sisi già l'avevo sistemato..  grazie lo stesso
Logged

Solo due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi.
gaernik
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 114


« Reply #6 on: 17-04-2009, 15:55:33 »

io l'ho fatta così, utilizzando la classe LinkedList

Main:
Code:
import java.io.*;
import java.util.*;
public class Main
{
    public static void main (String [] args)
    {
        Persona[] prs = new Persona[5];
        String [] nomi={"Mario", "Paolo", "Filippo", "Alfio", "Marianno"};
        String [] cognomi={"Roassi", "Bianchi", "Verdi", "Azzurri", "Neri"};
       
        for (int i=0;i<prs.length;i++)
            prs[i]=new Persona(nomi[i], cognomi[i]);   
        try{
            LinkedList myList = new LinkedList<Persona>();
            File f = new File("Persona.txt");
            ObjectOutputStream out = new ObjectOutputStream (new
                            FileOutputStream(f, false));
            ObjectInputStream ois = new ObjectInputStream (new
                            FileInputStream(f));
            for (int i=0;i<prs.length;i++)           //scrive sul file Persona.txt
                    out.writeObject(prs[i]);
            for (int i=0;i<prs.length;i++)          //aggiungo gli elementi alla lista   
                myList.add(ois.readObject());
            System.out.println(myList);               //print che verifica se effettivamente abbia creato la lista
                     
            ois.close();
            out.close();
           
        }catch(Exception e){
            System.out.println(e);
        }
        //lettura/scrittura della lista in file contenenti gli indici dispari o pari
        try{
            ObjectInputStream ois1 = new ObjectInputStream (new
                            FileInputStream("Persona.txt"));
            ObjectOutputStream outPari = new ObjectOutputStream (new
                            FileOutputStream("PersonePari.txt", false));
            ObjectOutputStream outDispari = new ObjectOutputStream (new
                            FileOutputStream("PersoneDispari.txt", false));
            ObjectInputStream oisPari = new ObjectInputStream (new
                            FileInputStream("PersonePari.txt"));
            ObjectInputStream oisDispari = new ObjectInputStream (new
                            FileInputStream("PersoneDispari.txt"));
            for (int i=0;i<prs.length;i++)
            {
                if (i%2==0)                                             //controllo se è di posto pari
                    outPari.writeObject(ois1.readObject());
                else
                    outDispari.writeObject(ois1.readObject());
            }
           
            for (int i=0;i<prs.length;i++)
            {
                System.out.println("Pari: "+oisPari.readObject());
                System.out.println("Dispari: "+oisDispari.readObject());
            }
            ois1.close();
            outPari.close();
            outDispari.close();
        }catch (Exception e){
            System.out.println(e);
        }
    }
}

classe Persona:
Code:
import java.io.*;
public class Persona implements Serializable, Comparable<Persona>
{
    private String nome;
    private String cognome;
   
    public Persona(String _nome, String _cognome)
    {
        nome=_nome;
        cognome=_cognome;
    }
       
    public String toString()
    {
        return nome+" "+cognome;
    }
   
    public String getNome()
    {
        return nome;
    }
    public int compareTo(Persona other)
    {
        int ret=0;
        if ((nome.compareTo(other.getNome()))>0)
            ret=1;
        if ((nome.compareTo(other.getNome()))==0)
            ret=0;
        if ((nome.compareTo(other.getNome()))<0)
            ret=1;
        return ret;
    }
}

nella compilazione del main da anche a me
Code:
Note: Main.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

invece a runtime finisce l'esecuzione con un
Code:
java.io.EOFException

consigli/migliorie? 
Logged
Pages: [1]   Go Up
Print
Jump to: