Salve a tutti, vorrei un aiuto su un programma in java...
Allora, devo creare due file di oggetti, uno di tipo persona(cognome,nome,età) e
uno di tipo relazione(persona1,persona2,tipo_relazione) dove gli attributi
persona1,persona2 sono oggetti di tipo persona. Si devono caricare i dati in un
grafo...e si devono etichettare gli archi con la tipologia di relazione. Non so
come leggere dal main i due file di oggetti! ne so leggere solo uno...Il "persone.dat".
Ecco la mia implementazione:
import java.io.*;
public class Esame
{
public static void main(String[]args)throws Exception
{
DigrafoLA g=new DigrafoLA();
try{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("persone.dat"));
while(true)
{
try{
Persona t=(Persona)ois.readObject();
g.aggiungiNodo(t);
}
catch(Exception e){break;}
}
ois.close();
System.out.println(g);
int numArchi=(g.getNumNodi()*g.getNumNodi())…
for (int i = 0; i <numArchi; i++)
{
int src, dst;
src=(int)(Math.random()*g.getNumNodi());
dst =(int)(Math.random()*g.getNumNodi());
g.aggiungiArco(g.getNodo(src),g.getNodo(dst));
System.out.println("Inserito arco tra "
+ g.getNodo(src).info + " e "
+ g.getNodo(dst).info);
}
System.out.println("\nEcco i nodi con la relativa lista di adiacenza!:\n");
System.out.println(g);
}
catch(Exception e)
{
e.printStackTrace();
}
}
Ecco il primo file, in cui creo le persone:
import java.io.*;
public class creaFile //implements Serializable
{
public static void main (String[] args)
{
Persona p1=new Persona("Rossi","Mario",56);
Persona p2=new Persona("Neri","Lucia",47);
Persona p3=new Persona("Rossi","Pippo",29);
try{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new
File("persone.dat")));
oos.writeObject(p1);
oos.writeObject(p2);
oos.writeObject(p3);
oos.close();
System.out.println("ok!");
}
catch(IOException e)
{
System.out.println(e);
}
}
}
L'altro file in cui creo le relazioni tra le persone:
import java.io.*;
public class creaRelazioni
{
public static void main (String[] args) throws Exception
{
Persona p1=new Persona("Rossi","Mario",56);
Persona p2=new Persona("Neri","Lucia",47);
Persona p3=new Persona("Rossi","Pippo",29);
Relazione r1=new Relazione(p1,p2,"MARITO DI");
Relazione r2=new Relazione(p2,p1,"MOGLIE DI");
Relazione r3=new Relazione(p3,p2,"FIGLIO DI");
Relazione r4=new Relazione(p3,p1,"FIGLIO DI");
try{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(new
File("relazioni.dat")));
oos.writeObject(r1);
oos.writeObject(r2);
oos.writeObject(r3);
oos.writeObject(r4);
oos.close();
System.out.println("ok!");
}
catch(IOException e)
{
System.out.println(e);
}
}
}
class Persona implements Serializable
{
public String cognome,nome;
public int eta;
public Persona(String c,String n,int e)
{
cognome=c;
nome=n;
eta=e;
}
public String getCognome(){
return cognome;
}
public String getNome(){
return nome;
}
public int getEta(){
return eta;
}
public String toString()
{
return (cognome+","+nome+", Età:"+eta);
}
}
Questa la classe Relazione:
import java.io.*;
public class Relazione implements Serializable
{
protected Persona p1,p2;
protected String rel;
public Relazione(Persona pU,Persona pD,String r)
{
p1=pU;
p2=pD;
rel=r;
}
}
E questo è il metodo toString del grafo orientato, in cui devo stampare gli
archi etichettati con il tipo di relazione, ed è qui il problema...
public String toString()
{
String str="DigrafoLA:\n";
for(int i=0; i<nodi.size ; i++)
{
NodoLAor nodoTemp= (NodoLAor)nodi.get(i);
str += "- "+(nodoTemp.info) + "";
for(int j=0; j<nodoTemp.LA.size;j++)
{
NodoLAor adiacente= (NodoLAor)nodoTemp.LA.get(j);
//str += "-"+((RELAZIONE)adiacente.info).rel+"["+adiacente.info+"]";
str +="-["+adiacente.info+"]";
}
str += "\n";
}
return str;
}
Grazie per l'attenzione

Rispondi quotando

