Originariamente inviato da nether
adesso come adesso il tuo arraylist viene riempito fintanto che non si verifica un'eccezione. Nel momento in cui si verifica, nel tuo caso, una NumberFormatException, l'esecuzione smette istantaneamente di fare cio' che e' contenuto nel "try" (quindi di riempire l'arraylist con i prodotti) e passa ad eseguire cio' che c'e' nel "catch" (quindi ti stampa la riga relativa agli errori).
Ragione per la quale, se l'eccezione avviene "al primo giro", ossia quando consideri i dati relativi al primo prodotto, il tuo arraylist te lo trovi vuoto nel momento in cui cerchi di stamparne il contenuto.
capito grazie
ho provato a fare il riordino questo pomeriggio... facendo solo un pò di danni
saresti così gentile da dare un occhio anche a quest'ultima cosa..
ho fatto l'ordinamento per id ma mi scrive ancora 2 warning compilando magazzino, gli altri errori li ho già risolti con inserendo alcuni import mancanti..
1)found : negozio.data.ProdottoByIdComparator
required: java.util.Comparator<? super negozio.data.Prodotto>
Collections.sort(listaProdotto, new ProdottoByIdComparator());
2)Collections.sort(listaProdotto, new ProdottoByIdComparator());
2 warnings
----------------------------------------------------------------------------------------
Ho provato anche a scrivere una parte di codice per fare un altro tipo di ordinamento
(es per scadenza e anche per quantita)
codice:
import java.util.Comparator;
public class ProdottoByScadenzaComparator {
public ProdottoByScadenzaComparator() {
}
public int compare(Object o1, Object o2) {
Prodotto p1 = (Prodotto) o1;
Prodotto p2 = (Prodotto) o2;
return (p1 == p2 ? 0 : (p1 == null ? -1 : (p2 == null ? 1 : p1.getScadenza().compareTo(p2.getScadenza()))));
}
}
codice:
import java.util.Comparator;
public class ProdottoByQuantitaComparator {
/** Creates a new instance of ProdottoByQuantitaComparator */
public ProdottoByQuantitaComparator() {
}
public int compare(Object o1, Object o2) {
Prodotto p1 = (Prodotto) o1;
Prodotto p2 = (Prodotto) o2;
return (p1 == p2 ? 0 : (p1 == null ? -1 : (p2 == null ? 1 : p1.getQuantita().compareTo(p2.getQuantita()))));
}
}
il primo si compila correttamente il secondo invece mi dice:
int cannot be dereferenced.
Quando vado poi a richiamare entrambe in magazzino con tt gli import
es.
Collections.sort(listaProdotto, new ProdottoByScadenzaComparator());
Collections.sort(listaProdotto, new ProdottoByQuantitaComparator());
mi genera un altro errore:
symbol : method sort(java.util.ArrayList<negozio.data.Prodotto>,ne gozio.data.ProdottoByScadenzaComparator)
location: class java.util.Collections
Collections.sort(listaProdotto, new ProdottoByScadenzaComparator());
Spero di aver esposto in modo chiaro questi errori e di non averti disturbato troppo per oggi...