Ciao,nel mio progetto ho le seguenti classi:
Ho una classe studente:
La classe Esegui che contiene il main e vengono fatte tante scelte tra cui quella di caricare i dati:codice:package scuola; import java.io.Serializable; import java.util.*; public class Studente implements Serializable { private static final long serialVersionUID = 1L; String cognome; String matricola; String classe; ArrayList<String> amici= new ArrayList<String>(); public String getCognome() { return cognome; } public String getClasse() { return classe; } public double getMatricola() { return dimensione; } }
La classe ElencoStudenticodice:package scuola; import java.io.*; import javax.swing.JOptionPane; import java.util.*; public class Esegui { public static void main(String[] args) { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); int scelta; String line; ElencoStudenti elstu = new ElencoStudenti(); Vector<Studenti> stu = new Vector<Studenti>(); //un menu' con le possibile scelte e in base al numero che scrivo eseguo un case //........ try { String risp = new String("si"); while (risp.equals("si")) { System.out.println("scelta: "); line = br.readLine(); selezione = Integer.parseInt(line); switch (scelta) { case 1: ........ break; case 2: ........ break; case 3: String filestudenti = JOptionPane .showInputDialog(null, "Inserire il nome del file che contiene gli studenti: "); String fileamici = JOptionPane .showInputDialog(null, "Inserire il nome del file che contiene gli amici: "); String s1 = filestudenti + ".txt"; String s2 = fileamici + ".txt"; sta=elstu.caricaDati(s1, s2); break; } } }
La classe Aula:codice:package scuola; import java.io.*; import java.util.*; public class ElencoStudenti extends Aula<Studente> { private static final long serialVersionUID = 1L; //altri metodi che fanno altre cose public Vector<Studente> caricaDati(String f1, String f2) { try { BufferedReader reader = new BufferedReader(new FileReader(f1)); BufferedReader reader1 = new BufferedReader(new FileReader(f2)); String riga1 = reader1.readLine(); String riga = reader.readLine(); while (riga != null) { Studente s = new Studente(); String[] split = riga.split(":"); if (split.length != 2) { continue; } String var = split[0].trim(); s.cognome = var; StringTokenizer tokenizer = new StringTokenizer(split[1], " "); while (tokenizer.hasMoreTokens()) { s.matricola = (tokenizer.nextToken().trim()); s.classe = (tokenizer.nextToken().trim()); stu.add(s); } riga = reader.readLine(); } reader.close(); while (riga1 != null) { String[] split1 = riga1.split(":"); if (split1.length != 2) { continue; } String var1 = split1[0].trim(); String var2 = split1[1].trim(); if (!(stu.isEmpty())) { int i = 0; while (i < stu.size()) { if (((String) ((Studente) stu.get(i)).cognome) .equalsIgnoreCase(var1)) (((S) sta.get(i)).amici).add(var2); else if (((String) ((Studente) stu.get(i)).cognome) .equalsIgnoreCase(var2)) (((Studente) stu.get(i)).amici).add(var1); if (i != stu.size()) i++; } } riga1 = reader1.readLine(); } reader1.close(); } catch (IOException e) { System.out.println(e.getMessage()); } return stu; }
Il fiile filestudenti.txt è cosi composto:codice:package scuola; import java.util.Vector; public abstract class Aula<T> { private static final long serialVersionUID = 1L; Vector<Studente> stu = new Vector<Studente>(); }
Rossi : 00122 3C
Bianchi : 03453 4B
......
......
Il file fileamici.txt è così composto:
Bianchi : Verdi
Verdi : Rossi
Rossi : Neri
.....
.....
In pratica quando leggo il primo file memorizzo nel vettore degli studenti tutti gli studenti e quando leggo il secondo file memorizzo nell'arraylist amici di ogni studente l'amico,in base all'esempio nell'arrylist amici di Rossi dovrà comparire Verdi e Neri.
La parte di codice che mi da problemi è quella in grassetto cioè quando leggo il secondo file.
Se stampo il vettore dopo aver letto il primo file mi stampa la lista degli studenti mentre appena leggo il secondo file non mi stampa più niente.Volevo sapere se qualcuno mi può aiutare,in cosa sbaglio?Grazie!!!!

Rispondi quotando
