ho 3 file.
1. un file di prodotti (codice prodotto, descrizione, prezzo)
2.un file di magazzini (codice magazzino, indirizzo ecc)
3.un file di giacenze (codice prodotto, cod magazzino e quantità)
devo scrivere un programma che dato un codice prodotto restituisce l'elenco dei magazzini che lo contengono.
il punto è che mi dà un errore che non mi era mai uscito prima ossia:
exeption in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java: 167)
at java.util.ArrayList.add(ArrayList.java:351)
at Azienda2.<init>(Azienda2.java:22)
at Tester.main(Tester.java:26)
le classi sono queste:
CLASSE PRODOTTO:
codice:import java.io.PrintStream; import java.util.Scanner; public class Prodotto { private String codiceProdotto; private String descrizione; private double prezzo; public Prodotto(String aCodiceProdotto, String aDescrizione, double aPrezzo) { this.codiceProdotto=aCodiceProdotto; this.descrizione=aDescrizione; this.prezzo=aPrezzo; } public String getCodiceProdotto() { return codiceProdotto; } public String getDescrizione() { return descrizione; } public double getPrezzo() { return prezzo; } public void setPrezzo(double aPrezzo) { prezzo=aPrezzo; } public String toString() { return "Codice prodotto: " + codiceProdotto + "\n" + "Descrizione: " + descrizione + "\n" +" Prezzo: " + prezzo; } public void print (PrintStream ps) { ps.println(codiceProdotto); ps.println(descrizione); ps.println(prezzo); } public static Prodotto read (Scanner s) { if(!s.hasNext()) return null; String codiceProdotto=s.nextLine(); if(!s.hasNext()) return null; String descrizione=s.nextLine(); if(!s.hasNext()) return null; double prezzo=Double.parseDouble(s.nextLine()); Prodotto p= new Prodotto (codiceProdotto, descrizione, prezzo); return p; } }
CLASSE MAGAZZINO:
codice:import java.io.PrintStream; import java.util.Scanner; public class Magazzino { private String codiceMagazzino; private String indirizzo; private String città; private String nazione; private int telefono; private int fax; public Magazzino(String aCodiceMagazzino, String aIndirizzo, String aCittà, String aNazione, int aTelefono, int aFax) { this.codiceMagazzino=aCodiceMagazzino; this.indirizzo=aIndirizzo; this.città=aCittà; this.nazione=aNazione; this.telefono=aTelefono; this.fax=aFax; } public String getCodiceMagazzino() { return codiceMagazzino; } public String getIndirizzo() { return indirizzo; } public String getCittà() { return città; } public String getNazione() { return nazione; } public int getTelefono() { return telefono; } public int getFax () { return fax; } public String toString() { return "Codice magazzino: " + codiceMagazzino + "\n" + "Indirizzo: " + indirizzo + "\n" + "Città: " + città + "\n" + "Nazione: " + nazione +"\n" + "Telefono: " + telefono + "\n" + "Fax: " + fax; } public void print (PrintStream ps) { ps.println(codiceMagazzino); ps.println(indirizzo); ps.println(città); ps.println (nazione); ps.println(telefono); ps.println(fax); } public static Magazzino read (Scanner s2) { if(s2.hasNext()) return null; String codiceMagazzino=s2.nextLine(); if(s2.hasNext()) return null; String indirizzo=s2.nextLine(); if(s2.hasNext()) return null; String città=s2.nextLine(); if(s2.hasNext()) return null; String nazione=s2.nextLine(); if(s2.hasNextInt()) return null; int telefono=s2.nextInt(); if(s2.hasNextInt()) return null; int fax=s2.nextInt(); Magazzino m=new Magazzino (codiceMagazzino, indirizzo, città, nazione, telefono, fax); return m; } }
CLASSE GIACENZA:
codice:import java.io.PrintStream; import java.util.Scanner; public class Giacenza { private String codiceProdotto; private String codiceMagazzino; private int quantità; public Giacenza (String aCodiceProdotto, String aCodiceMagazzino, int aQuantità) { this.codiceProdotto=aCodiceProdotto; this.codiceMagazzino=aCodiceMagazzino; } public String getCodiceProdotto() { return codiceProdotto; } public String getCodiceMagazzino() { return codiceMagazzino; } public int getQuantità() { return quantità; } public void setQuantità(int aQuantità) { quantità=aQuantità; } public String toString() { return "Codice prodotto: " +codiceProdotto + "\n" + "Codice magazzino: " +codiceMagazzino + "\n" + "Quantità: " + quantità; } public void print (PrintStream ps) { ps.println(codiceProdotto); ps.println(codiceMagazzino); ps.println(quantità); } public static Giacenza read (Scanner s3) { if(s3.hasNext()) return null; String codiceProdotto=s3.nextLine(); if(s3.hasNext()) return null; String codiceMagazzino=s3.nextLine(); if(s3.hasNextInt()) return null; int quantità=s3.nextInt(); Giacenza g=new Giacenza (codiceProdotto, codiceMagazzino, quantità); return g; } }
CLASSE AZIENDA:
codice:import java.util.ArrayList; import java.util.Scanner; public class Azienda2 { private ArrayList <Prodotto> prodotti; private ArrayList <Magazzino> magazzini; private ArrayList <Giacenza> giacenze; public Azienda2(Scanner s, Scanner s2, Scanner s3) { prodotti= new ArrayList <Prodotto>(); magazzini=new ArrayList <Magazzino>(); giacenze=new ArrayList <Giacenza>(); while(s.hasNext()) { Prodotto p = Prodotto.read(s); prodotti.add(p); } while(s2.hasNext()) { Magazzino m=Magazzino.read(s2); magazzini.add(m); } while(s3.hasNext()) { Giacenza g=Giacenza.read(s3); giacenze.add(g); } } public void stampaArchivio() { for(Prodotto p: prodotti) System.out.println(p); } public void elencoMagazzini(String aCodiceProdotto){ for(Giacenza g: giacenze){ if(aCodiceProdotto.equalsIgnoreCase(g.getCodiceProdotto())) for(Prodotto p: prodotti) if(g.getCodiceProdotto().equalsIgnoreCase(p.getCodiceProdotto())) for(Magazzino m: magazzini) if(g.getCodiceMagazzino()==m.getCodiceMagazzino()) System.out.println(m); } } }
E INFINE IL TESTER:
codice:import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Scanner; public class Tester { public static void main(String[] args) throws FileNotFoundException { String percorso="/Users/alinagnerre/Desktop/ProdottoFile.txt"; File f=new File(percorso); FileReader fr=new FileReader(f); Scanner s=new Scanner (fr); String percorso2="/Users/alinagnerre/Desktop/MagazzinoFile.txt"; File f2=new File (percorso2); FileReader fr2=new FileReader(f2); Scanner s2=new Scanner (fr2); String percorso3="/Users/alinagnerre/Desktop/GiacenzaFile.txt"; File f3=new File (percorso3); FileReader fr3=new FileReader(f3); Scanner s3=new Scanner (fr3); Azienda2 azienda2=new Azienda2 (s, s2, s3); azienda2.stampaArchivio(); azienda2.elencoMagazzini("1x"); } }
SE POTETE SPIEGARMI DOVE HO SBAGLIATO?? GRAZIEEEEE

Rispondi quotando