- Fabietto771
- Ingegneria Informatica - Triennale
- Lunedì, 08 Marzo 2010
- Subscribe via email
Comment
There are no comments made yet.
grazie sei stato molto gentile, e soprattutto chiaro.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 121
[code type="markup"]public void eroga(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickRichiesti=nBrickRichiesti+quantita;
if (quantita > giacenza)
{
if (giacenza ==0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
;
}
else
{
if (quantita <= giacenza)
{
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickErogati += quantita;
contatoreComuneProdottiErogati.incrementa(quantita);
}
else
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
;
}
}
}
[/code]
[code type="markup"]
private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
String b = quantitaF.getText();
int a = Integer.parseInt(b);
if (b.equals(""
)
JOptionPane.showMessageDialog(null, " Quantità nulla!! "
;
else
try
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
controllore.eroga(tipo,a);
if (a > controllore.giacenza(tipo)){
int ritorno= JOptionPane.showConfirmDialog( null, "Quantità disponobile = " + controllore.giacenza(tipo) + " procedere?", "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
a = controllore.giacenza(tipo);
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}}
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
;
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, " Nome prodotto non valido. "
;
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
;
}
catch (GiacenzaInsufficienteException e)
{
JOptionPane.showMessageDialog(null, " Giacenza insufficiente. "
;
}
}
}
[/code]
eroga l'ho sistemato così. potresti dare un'occhiata se è giusto? è così che vuole il prof?
{
if (quantita <= 0)
throw new QuantityException();
nBrickRichiesti=nBrickRichiesti+quantita;
if (quantita > giacenza)
{
if (giacenza ==0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if (quantita <= giacenza)
{
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickErogati += quantita;
contatoreComuneProdottiErogati.incrementa(quantita);
}
else
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
[/code]
[code type="markup"]
private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
String b = quantitaF.getText();
int a = Integer.parseInt(b);
if (b.equals(""
JOptionPane.showMessageDialog(null, " Quantità nulla!! "
else
try
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
controllore.eroga(tipo,a);
if (a > controllore.giacenza(tipo)){
int ritorno= JOptionPane.showConfirmDialog( null, "Quantità disponobile = " + controllore.giacenza(tipo) + " procedere?", "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
a = controllore.giacenza(tipo);
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}}
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, " Nome prodotto non valido. "
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
}
catch (GiacenzaInsufficienteException e)
{
JOptionPane.showMessageDialog(null, " Giacenza insufficiente. "
}
}
}
[/code]
eroga l'ho sistemato così. potresti dare un'occhiata se è giusto? è così che vuole il prof?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 122
Hai un errore in eroga della classe prodotto.
[code type="markup"]
if (quantita > giacenza)
{
if (giacenza ==0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
;
}
else
{
if (quantita <= giacenza) //nn si verifica mai. per entrare nel if principale quantita è sempre > di giacenza
...
}
[/code]
per quanto riguarda erogaAA io i vari controlli li ho messi nel catch di giacenzaInsuffException. Nel modo in cui hai fatto tu non funziona perchè controllore.eroga(tipo, a) lancia le eccezioni e il controllo passa ai catch nel confine, quindi (a > controllore.giacenza(tipo)) è inutile così...non si verfica mai e se si verifica non viene eseguito.
Poi in ogni caso quando verifichi che ritorno == JOptionPane.YES_OPTION non puoi solo assegnare ad a il valore della giacenza..ma devi richiamare il metodo eroga del controllore con la giacenza massima disponibile.
Metti la logica nel catch che ti ho indicato e dovrebbe andare..
[code type="markup"]
if (quantita > giacenza)
{
if (giacenza ==0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if (quantita <= giacenza) //nn si verifica mai. per entrare nel if principale quantita è sempre > di giacenza
...
}
[/code]
per quanto riguarda erogaAA io i vari controlli li ho messi nel catch di giacenzaInsuffException. Nel modo in cui hai fatto tu non funziona perchè controllore.eroga(tipo, a) lancia le eccezioni e il controllo passa ai catch nel confine, quindi (a > controllore.giacenza(tipo)) è inutile così...non si verfica mai e se si verifica non viene eseguito.
Poi in ogni caso quando verifichi che ritorno == JOptionPane.YES_OPTION non puoi solo assegnare ad a il valore della giacenza..ma devi richiamare il metodo eroga del controllore con la giacenza massima disponibile.
Metti la logica nel catch che ti ho indicato e dovrebbe andare..
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 123
hai ragione mi sa che ero troppo distratto quando ho scritto quella cosa, ed ho fatto un casino.
l'unica cosa non ho capito cosa intendi quando dici di mettere i controlli nel catch. potresti spiegarmi meglio? grazie.
l'unica cosa non ho capito cosa intendi quando dici di mettere i controlli nel catch. potresti spiegarmi meglio? grazie.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 124
ti incollo il mio metodo
[code type="markup"]
private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
if (quantitaF.getText().equals(""
)
JOptionPane.showMessageDialog(null, " Quantità nulla!! "
;
else
try
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
controllore.eroga(tipo,Integer.parseInt(quantitaF.getText()));
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
;
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, " Nome prodotto non valido. "
;
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
;
}
catch (GiacenzaInsufficienteException e)
{
int quantita = Integer.parseInt(quantitaF.getText());
int giacenza = e.getGiacenza(); //non badarci..tu hai usato controllore.giacenza(tipo) va bene ugualmente
if (giacenza == 0)
JOptionPane.showMessageDialog(null, e.getMessage());
else if (giacenza < quantita)
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
int ritorno = JOptionPane.showConfirmDialog( null, e.getMessage(), "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
try {
controllore.eroga(tipo, giacenza);
} catch (IDEsternoProdottoException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage());
} catch (QuantityException e1) {
e1.printStackTrace();
} catch (GiacenzaInsufficienteException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage(), "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}
[/code]
così funziona perchè nel caso si verifichi l'eccezione viene eseguito quello che c'è nel catch
[code type="markup"]
private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
if (quantitaF.getText().equals(""
JOptionPane.showMessageDialog(null, " Quantità nulla!! "
else
try
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
controllore.eroga(tipo,Integer.parseInt(quantitaF.getText()));
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, " Nome prodotto non valido. "
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
}
catch (GiacenzaInsufficienteException e)
{
int quantita = Integer.parseInt(quantitaF.getText());
int giacenza = e.getGiacenza(); //non badarci..tu hai usato controllore.giacenza(tipo) va bene ugualmente
if (giacenza == 0)
JOptionPane.showMessageDialog(null, e.getMessage());
else if (giacenza < quantita)
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
int ritorno = JOptionPane.showConfirmDialog( null, e.getMessage(), "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
try {
controllore.eroga(tipo, giacenza);
} catch (IDEsternoProdottoException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage());
} catch (QuantityException e1) {
e1.printStackTrace();
} catch (GiacenzaInsufficienteException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage(), "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}
[/code]
così funziona perchè nel caso si verifichi l'eccezione viene eseguito quello che c'è nel catch
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 125
Quando il prof si riferisce ai controllori e alle entità, dalle quali dobbiamo togliere le classi di Dialogo per metterle nelle classi di confine, a quali classi si riferisce? Il controllore dovrebbe essere la sola classe GProdottiFK , ma le entità quali sono? Mi riferisco a quando chiede lo spostamento nella classe ConfineAmministratore che è la boundary nella quale mettere quanto scritto nella prima riga. Altra domanda. Una volta identificate le classi in gioco, sostanzialmente bisogna fare in modo, per questi spostamenti, che le classi controllo ed entità passino una serie di check con la classe di confine, ConfineAmministratore, e viceversa. Giusto?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 126
Mi ero dimenticato una cosa. Quando chiede di individuare e modificare l'erroredi computo in un metodo della classe prodotto, a quale metodo e a quale errore si riferisce? Come va cambiato? Grazie mille
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 127
ti incollo il mio metodo
[code type="markup"]
private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
if (quantitaF.getText().equals("")
JOptionPane.showMessageDialog(null, " Quantità nulla!! "
else
try
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
controllore.eroga(tipo,Integer.parseInt(quantitaF.getText()));
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, " Nome prodotto non valido. "
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
}
catch (GiacenzaInsufficienteException e)
{
int quantita = Integer.parseInt(quantitaF.getText());
int giacenza = e.getGiacenza(); //non badarci..tu hai usato controllore.giacenza(tipo) va bene ugualmente
if (giacenza == 0)
JOptionPane.showMessageDialog(null, e.getMessage());
else if (giacenza < quantita)
{
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
int ritorno = JOptionPane.showConfirmDialog( null, e.getMessage(), "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
try {
controllore.eroga(tipo, giacenza);
} catch (IDEsternoProdottoException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage());
} catch (QuantityException e1) {
e1.printStackTrace();
} catch (GiacenzaInsufficienteException e1) {
JOptionPane.showMessageDialog(null, e1.getMessage(), "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
}
}
}
[/code]
così funziona perchè nel caso si verifichi l'eccezione viene eseguito quello che c'è nel catch
Ciao, senti io ho usato lo stesso metodo di eroga per affittare. Però una volta che testo il codice eroga funziona, non lanciandomi l'eccezione, mentre affitta no e lancia una nullpointerexception nella riga del contatore [code type="markup"] ComuneProdottiAffittati.incrementa(quantita);[/code] quando comunque sono stata attenta ad inizializzare il contatore singolo. Forse devo gestire diversamente l'affitto? Non so se vuoi che ti incolli il codice. Grazie in anticipo :wink:
Ah aggiungo pure che pur lanciando l'eccezione, il metodo fa quello che deve fare, nel senso che diminuisce la giacenza.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 128
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 129
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
Scusate, a me non funziona? Devo inserire i controlli dentro GiacenzaInsufficienteException? Se sì, come devo fare?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 130
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
Scusate, a me non funziona? Devo inserire i controlli dentro GiacenzaInsufficienteException? Se sì, come devo fare?
ho già risposto a seven986 alla stessa identica domanda praticamente..ho pure incollato il codice con il catch fatto. Leggi i post indietro
Non devi inserire nessun controllo nella classe dell'eccezione..ma nel catch della classe di confine che gestisce l'eccezione
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 131
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
Scusate, a me non funziona? Devo inserire i controlli dentro GiacenzaInsufficienteException? Se sì, come devo fare?
ho già risposto a seven986 alla stessa identica domanda praticamente..ho pure incollato il codice con il catch fatto. Leggi i post indietro...
[code type="markup"]private class ErogaAA implements ActionListener
{
public void actionPerformed(ActionEvent arg0)
{
try
{
if (quantitaF.getText().equals(""
throw new QuantityException();
IDEsternoProdotto tipo = new IDEsternoProdotto(iDEsternoProdottoF.getText());
int newQuantity=0;
if(!controllore.gestisci_giacenza(tipo, Integer.parseInt(quantitaF.getText()))){
int ritorno= JOptionPane.showConfirmDialog( null, "Quantità disponobile = " + controllore.giacenza(tipo) + " procedere?", "Attenzione!", JOptionPane.YES_NO_OPTION);
if(ritorno == JOptionPane.YES_OPTION)
{
newQuantity = controllore.giacenza(tipo) ;
controllore.eroga(tipo,newQuantity);
}
else
{
JOptionPane.showMessageDialog(null, "Operazione annullata!", "Attenzione!", JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
JOptionPane.showMessageDialog(null, "Erogate con succeso " +quantitaF.getText()+ " biciclette"
}
}
catch (NumberFormatException e)
{
JOptionPane.showMessageDialog(null, " Quantità non valida. "
}
catch (IDEsternoProdottoException e)
{
JOptionPane.showMessageDialog(null, e.getMessage());
}
catch (QuantityException e)
{
JOptionPane.showMessageDialog(null, " Quantità negativa o nulla. "
}
catch (GiacenzaInsufficienteException e)
{
JOptionPane.showMessageDialog(null, " Giacenza insufficiente. "
}
}
}[/code]
Mi puoi dire se questo codice può andar bene? Fa quello che deve fare e non dà errori ma è così che lo vorrebbe il prof? Gestisci_giacenza fa un check se giacenza>quantità & giacenza!=0 allora eroga, altrimenti dai false.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 132
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
[code type="markup"]public class Prodotto implements Serializable
{
private static final long serialVersionUID = 1L;
private LogMonitorGiacenza logGiacenze;
private String descrizione;
private int giacenza;
private IDEsternoProdotto iDEsterno;
private int nBrickErogati;
private int nBrickRichiesti;
private int nBrickAffittati;
private int nBrickdaAffittare;
private ContatoreSingolo contatoreComuneProdottiAffittati = null;
private ContatoreSingolo contatoreComuneProdottiErogati = null;
private ConfineOperativo confine;
public Prodotto(IDEsternoProdotto t, String nuovaDescrizione, ConfineOperativo confine)
{
this.confine = confine;
iDEsterno = t;
logGiacenze = new LogMonitorGiacenza(iDEsterno.toString());
descrizione = nuovaDescrizione;
giacenza = 0;
logGiacenze.aggiungi("0"
nBrickErogati = 0;
nBrickRichiesti = 0;
nBrickAffittati = 0;
nBrickdaAffittare = 0;
if (contatoreComuneProdottiErogati == null)
contatoreComuneProdottiErogati = ContatoreSingolo.crea();
if (contatoreComuneProdottiAffittati == null)
contatoreComuneProdottiAffittati = ContatoreSingolo.crea();
public void affitta(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickAffittati = nBrickAffittati+quantita;
if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if(quantita <= giacenza){
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickAffittati += quantita;
contatoreComuneProdottiAffittati.incrementa(quantita);
}
else
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
}[/code]
Grazie mille, sei veramente gentile
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 133
Mi puoi dire se questo codice può andar bene? Fa quello che deve fare e non dà errori ma è così che lo vorrebbe il prof? Gestisci_giacenza fa un check se giacenza>quantità & giacenza!=0 allora eroga, altrimenti dai false.
a funzionare funziona. però così l'eccezione giacenzaInsufficienteException non credo venga mai sollevata perchè il check avviene nel controllore. Diciamo che se il prof si mette a spulciare il codice si potrebbe infastidire
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 134
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
[code type="markup"]public class Prodotto implements Serializable
{
private static final long serialVersionUID = 1L;
private LogMonitorGiacenza logGiacenze;
private String descrizione;
private int giacenza;
private IDEsternoProdotto iDEsterno;
private int nBrickErogati;
private int nBrickRichiesti;
private int nBrickAffittati;
private int nBrickdaAffittare;
private ContatoreSingolo contatoreComuneProdottiAffittati = null;
private ContatoreSingolo contatoreComuneProdottiErogati = null;
private ConfineOperativo confine;
public Prodotto(IDEsternoProdotto t, String nuovaDescrizione, ConfineOperativo confine)
{
this.confine = confine;
iDEsterno = t;
logGiacenze = new LogMonitorGiacenza(iDEsterno.toString());
descrizione = nuovaDescrizione;
giacenza = 0;
logGiacenze.aggiungi("0"
nBrickErogati = 0;
nBrickRichiesti = 0;
nBrickAffittati = 0;
nBrickdaAffittare = 0;
if (contatoreComuneProdottiErogati == null)
contatoreComuneProdottiErogati = ContatoreSingolo.crea();
if (contatoreComuneProdottiAffittati == null)
contatoreComuneProdottiAffittati = ContatoreSingolo.crea();
public void affitta(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickAffittati = nBrickAffittati+quantita;
if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if(quantita <= giacenza){
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickAffittati += quantita;
contatoreComuneProdottiAffittati.incrementa(quantita);
}
else
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
}[/code]
Grazie mille, sei veramente gentile
Guarda che non puoi utilizzare lo stesso tipo di contatore sia per gli affittati che per gli erogati. Le due variabili dei contatore puntano alla stesso oggetto in questo modo perchè crea() ti restituisce un contatore nuovo solo se la variabile statica meStesso == null..ma questa viene istanziata già prima dal contatore degli erogati. Crea un'altra classe identica ma separata per il contatore degli affitti e dovresti risolvere. Scusa ma vado un pò di fretta, prova così comunque!
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 135
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
[code type="markup"]public class Prodotto implements Serializable
{
private static final long serialVersionUID = 1L;
private LogMonitorGiacenza logGiacenze;
private String descrizione;
private int giacenza;
private IDEsternoProdotto iDEsterno;
private int nBrickErogati;
private int nBrickRichiesti;
private int nBrickAffittati;
private int nBrickdaAffittare;
private ContatoreSingolo contatoreComuneProdottiAffittati = null;
private ContatoreSingolo contatoreComuneProdottiErogati = null;
private ConfineOperativo confine;
public Prodotto(IDEsternoProdotto t, String nuovaDescrizione, ConfineOperativo confine)
{
this.confine = confine;
iDEsterno = t;
logGiacenze = new LogMonitorGiacenza(iDEsterno.toString());
descrizione = nuovaDescrizione;
giacenza = 0;
logGiacenze.aggiungi("0"
nBrickErogati = 0;
nBrickRichiesti = 0;
nBrickAffittati = 0;
nBrickdaAffittare = 0;
if (contatoreComuneProdottiErogati == null)
contatoreComuneProdottiErogati = ContatoreSingolo.crea();
if (contatoreComuneProdottiAffittati == null)
contatoreComuneProdottiAffittati = ContatoreSingolo.crea();
public void affitta(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickAffittati = nBrickAffittati+quantita;
if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if(quantita <= giacenza){
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickAffittati += quantita;
contatoreComuneProdottiAffittati.incrementa(quantita);
}
else
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
}[/code]
Grazie mille, sei veramente gentile
Guarda che non puoi utilizzare lo stesso tipo di contatore sia per gli affittati che per gli erogati. Le due variabili dei contatore puntano alla stesso oggetto in questo modo perchè crea() ti restituisce un contatore nuovo solo se la variabile statica meStesso == null..ma questa viene istanziata già prima dal contatore degli erogati. Crea un'altra classe identica ma separata per il contatore degli affitti e dovresti risolvere. Scusa ma vado un pò di fretta, prova così comunque!
Non ti preoccupare, ma che scherzi, già è tanto che me lo hai guardato! Grazie mille proverò così
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 136
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
[code type="markup"]public class Prodotto implements Serializable
{
private static final long serialVersionUID = 1L;
private LogMonitorGiacenza logGiacenze;
private String descrizione;
private int giacenza;
private IDEsternoProdotto iDEsterno;
private int nBrickErogati;
private int nBrickRichiesti;
private int nBrickAffittati;
private int nBrickdaAffittare;
private ContatoreSingolo contatoreComuneProdottiAffittati = null;
private ContatoreSingolo contatoreComuneProdottiErogati = null;
private ConfineOperativo confine;
public Prodotto(IDEsternoProdotto t, String nuovaDescrizione, ConfineOperativo confine)
{
this.confine = confine;
iDEsterno = t;
logGiacenze = new LogMonitorGiacenza(iDEsterno.toString());
descrizione = nuovaDescrizione;
giacenza = 0;
logGiacenze.aggiungi("0"
nBrickErogati = 0;
nBrickRichiesti = 0;
nBrickAffittati = 0;
nBrickdaAffittare = 0;
if (contatoreComuneProdottiErogati == null)
contatoreComuneProdottiErogati = ContatoreSingolo.crea();
if (contatoreComuneProdottiAffittati == null)
contatoreComuneProdottiAffittati = ContatoreSingolo.crea();
public void affitta(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickAffittati = nBrickAffittati+quantita;
if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if(quantita <= giacenza){
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickAffittati += quantita;
contatoreComuneProdottiAffittati.incrementa(quantita);
}
else
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
}[/code]
Grazie mille, sei veramente gentile
Scusa, ma come hai fatto a far funzionare il suo erogaAA? A me non funziona. Mi dà errore.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 137
se incolli il codice provo a dargli un'occhiata. incolla pure dichiarazioni e costruttore di prodotto
[code type="markup"]public class Prodotto implements Serializable
{
private static final long serialVersionUID = 1L;
private LogMonitorGiacenza logGiacenze;
private String descrizione;
private int giacenza;
private IDEsternoProdotto iDEsterno;
private int nBrickErogati;
private int nBrickRichiesti;
private int nBrickAffittati;
private int nBrickdaAffittare;
private ContatoreSingolo contatoreComuneProdottiAffittati = null;
private ContatoreSingolo contatoreComuneProdottiErogati = null;
private ConfineOperativo confine;
public Prodotto(IDEsternoProdotto t, String nuovaDescrizione, ConfineOperativo confine)
{
this.confine = confine;
iDEsterno = t;
logGiacenze = new LogMonitorGiacenza(iDEsterno.toString());
descrizione = nuovaDescrizione;
giacenza = 0;
logGiacenze.aggiungi("0"
nBrickErogati = 0;
nBrickRichiesti = 0;
nBrickAffittati = 0;
nBrickdaAffittare = 0;
if (contatoreComuneProdottiErogati == null)
contatoreComuneProdottiErogati = ContatoreSingolo.crea();
if (contatoreComuneProdottiAffittati == null)
contatoreComuneProdottiAffittati = ContatoreSingolo.crea();
public void affitta(int quantita) throws GiacenzaInsufficienteException, QuantityException
{
if (quantita <= 0)
throw new QuantityException();
nBrickAffittati = nBrickAffittati+quantita;
if (giacenza == 0)
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
else
{
if(quantita <= giacenza){
giacenza = giacenza - quantita;
logGiacenze.aggiungi(String.valueOf(giacenza));
nBrickAffittati += quantita;
contatoreComuneProdottiAffittati.incrementa(quantita);
}
else
{
throw new GiacenzaInsufficienteException("Giacenza insufficiente"
}
}
}
}[/code]
Grazie mille, sei veramente gentile
Scusa, ma come hai fatto a far funzionare il suo erogaAA? A me non funziona. Mi dà errore.
Che tipo di errore ti da?
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 138
Se faccio il copia e incolla così com'è mi dà errore su e.getGiacenza(), e se al suo posto metto controllore.giacenza(tipo) mi diche che questo lo devo includere in un try/catch.
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 139
Se faccio il copia e incolla così com'è mi dà errore su e.getGiacenza(), e se al suo posto metto controllore.giacenza(tipo) mi diche che questo lo devo includere in un try/catch.
è ovvio, genera un'eccezione
Comment
There are no comments made yet.
- more than a month ago
- Ingegneria Informatica - Triennale
- # 140
There are no replies made for this post yet.
Be one of the first to reply to this post!
Be one of the first to reply to this post!
Please login to post a reply
You will need to be logged in to be able to post a reply. Login using the form on the right or register an account if you are new here. Register Here »