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