Buongiorno sono nuovo nel forum quindi mi scuserete se non rispetto alla perfezione le regole…Allora ho un programma da consegnare a breve al professore e ho molti problemi…qui il testo:
Gestione ordini
Realizzare un sistema che tratta ordini relativi a clienti e fornitori.
Classi e interfacce si trovano nel package ordini, gli esempi nel package di default.
R1 Anagrafica
La classe principale è Ordini, il metodo readAnagrafica() legge dal parametro, che è il nome di un file testuale, le informazioni sui prodotti, i clienti e i fornitori, organizzate in righe che iniziano con i caratteri P, C o F. Una riga di prodotto (ad esempio "P,divano2pT,200") contiene il carattere P, il codice del prodotto (String) e il prezzo (int) separati da una virgola. Una riga di cliente (ad esempio "C,Bianchi") contiene il carattere C e il codice del cliente (String) separati da una virgola. Una riga di fornitore (ad esempio "F,BetaMobili,divano2pP,poltronaP") contiene il carattere F, il codice del fornitore e i codici dei prodotti trattati dal fornitore separati da una virgola.
Il metodo legge il file in una struttura dati interna da definire. La struttura del file è sintatticamente corretta però possono esserci dei codici duplicati o indefiniti; in tal caso, la riga errata è ignorata e la lettura prosegue. Ad es. nel file AnagraficaE l’ultima riga P è ignorata perché il codice divano2pT è già stato definito nella prima riga P e l’ultima riga F è ignorata perché mensola non è un codice di prodotto.
I metodi getCodiciProdotti, getCodiciClienti e getCodiciFornitori danno la lista dei codici dei prodotti, clienti e fornitori ordinati alfabeticamente. Il metodo getCodiciProdottiFornitore (String codice) dà la lista dei codici dei prodotti del fornitore ordinati alfabeticamente. Il fornitore è identificato dal suo codice; se non esiste un fornitore con quel codice il metodo lancia un’eccezione di tipo CodiceInesistente.
Nota sul controllo dei codici: se un codice passato come parametro ad un metodo non corrisponde a nessun oggetto del tipo richiesto - un prodotto, un cliente, un fornitore, un ordine cliente, un ordine fornitore - il metodo lancia un’eccezione di tipo CodiceInesistente.
e la mia soluzione è questa ma effetuando i test dati dal professore c'è un errore sul metodo getCodiciProdottiFornitore
formato del file da Leggere:codice:TreeMap<String, Prodotto> prodotti = new TreeMap<String, Prodotto>(); TreeMap<String, Cliente> clienti = new TreeMap<String, Cliente>(); TreeMap<String, Fornitore> fornitori = new TreeMap<String, Fornitore>(); int od = 0; int i = 0; // Anagrafica @SuppressWarnings("resource") public void readAnagrafica(String fileName) { try { BufferedReader in = new BufferedReader(new FileReader(fileName)); String line1 = in.readLine(); while (line1 != null) { try { Scanner sc = new Scanner(line1).useDelimiter(";"); String n = sc.next(); if (n.equals("P")) { String codiceP = sc.next(); int Prezzo = sc.nextInt(); Prodotto p = new Prodotto(codiceP, Prezzo); prodotti.put(codiceP, p); } if (n.equals("C")) { String CodiceCl = sc.next(); Cliente c = new Cliente(CodiceCl); clienti.put(CodiceCl, c); } if (n.equals("F")) { String[] codcl1 = new String[100]; String CodiceF = sc.next(); for (int i = 0; i < 100; i++) { codcl1[i] = sc.next(); // String codcl2 = sc.next(); Fornitore f = new Fornitore(CodiceF, codcl1); fornitori.put(CodiceF, f); } } } catch (Exception e) { e.printStackTrace(); } line1 = in.readLine(); } ; in.close(); } catch (Exception e) { // e.printStackTrace(); } } } public ArrayList<String> getCodiciClienti() { ArrayList<String> list = new ArrayList<String>(clienti.keySet()); Collections.sort(list); return list; } public ArrayList<String> getCodiciProdotti() { ArrayList<String> list = new ArrayList<String>(prodotti.keySet()); Collections.sort(list); return list; } public ArrayList<String> getCodiciFornitori() { ArrayList<String> list = new ArrayList<String>(fornitori.keySet()); Collections.sort(list); return list; } public ArrayList<String> getCodiciProdottiFornitore(String codice) throws CodiceInesistente { Fornitore f = fornitori.get(codice); if (f == null) throw new CodiceInesistente(); ArrayList<String> list = new ArrayList<String>(); for (String s : fornitori.keySet()) { if (fornitori.get(s).equals(codice)) list.add(s); } Collections.sort(list); return list; }
codice:Anagrafica.txt P,divano2pT,200 P,divano2pP,400 P,poltronaT,150 P,poltronaP,250 P,libreria,300 P,scaffale,120 P,mensola,40 C,Bianchi C,Rossi C,Verdi F,AlfaMobili,divano2pT,poltronaT,libreria F,BetaMobili,divano2pP,poltronaP F,TuttoMobili,divano2pT,poltronaT,divano2pP,poltronaP,libreria,scaffale,mensola

Rispondi quotando
Ti ricordo che:
