Selezione di un prodotto se molti corrispondono + fix Tecnica Segreta Array come Liste™
This commit is contained in:
@@ -278,6 +278,7 @@ public class listaSpesa {
|
||||
boolean error, isAlimentare = false, useNomeProdotto = false, exit = false;
|
||||
String scelta, nomeODescrizione;
|
||||
float qta = 0;
|
||||
Prodotto prodottoTrovato;
|
||||
|
||||
do {
|
||||
do {
|
||||
@@ -319,11 +320,43 @@ public class listaSpesa {
|
||||
nomeODescrizione = sc.nextLine().trim();
|
||||
|
||||
if (ricercaProdotto(nomeODescrizione, isAlimentare)) {
|
||||
System.out.println("Prodotto trovato: ");
|
||||
|
||||
Prodotto prodottoTrovato = isAlimentare ? (Alimentare) ricercaProdotto(nomeODescrizione)
|
||||
: (NonAlimentare) ricercaProdotto(nomeODescrizione);
|
||||
prodottoTrovato.stampaDati();
|
||||
Prodotto prodottiTrovati[] = ricercaProdotto(nomeODescrizione);
|
||||
|
||||
if (prodottiTrovati.length == 1) {
|
||||
prodottoTrovato = prodottiTrovati[0];
|
||||
System.out.println("Prodotto trovato: ");
|
||||
prodottoTrovato.stampaDati();
|
||||
} else {
|
||||
System.out.println("Sono stati trovati i seguenti prodotti: ");
|
||||
for (int i = 0; i < prodottiTrovati.length; i++) {
|
||||
System.out.println("Prodotto n. " + i);
|
||||
prodottiTrovati[i].stampaDati();
|
||||
System.out.println();
|
||||
}
|
||||
int indice = 0;
|
||||
System.out.println();
|
||||
do {
|
||||
error = false;
|
||||
try {
|
||||
System.out.print("Inserire il numero di prodotto desiderato: ");
|
||||
indice = sc.nextInt();
|
||||
sc.nextLine();
|
||||
|
||||
if (indice < 0 || indice >= prodottiTrovati.length) {
|
||||
System.out.println("Errore: numero di prodotto non valido.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} catch (InputMismatchException e) {
|
||||
System.out.println("Errore: numero non valido.");
|
||||
pausa();
|
||||
error = true;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
prodottoTrovato = prodottiTrovati[indice];
|
||||
}
|
||||
|
||||
do {
|
||||
error = false;
|
||||
@@ -357,7 +390,7 @@ public class listaSpesa {
|
||||
|
||||
if (qta <= prodottoTrovato.checkQtaDisponibile(
|
||||
useNomeProdotto ? nomeODescrizione : prodottoTrovato.getNome(), qta)) {
|
||||
|
||||
|
||||
if (trovaProdottoInScontrino(prodottoTrovato) == -1) {
|
||||
|
||||
if (prodottoTrovato.getQta() - qta == 0) {
|
||||
@@ -397,6 +430,10 @@ public class listaSpesa {
|
||||
} while (error);
|
||||
|
||||
} else if (scelta.equals("n")) {
|
||||
System.out.println("Se il prodotto non è stato trovato, provare a scrivere un"
|
||||
+ (useNomeProdotto ? " nome" : "a descrizione") + " più precis"
|
||||
+ (useNomeProdotto ? "o" : "a") + " o a ricercare per "
|
||||
+ (useNomeProdotto ? "descrizione" : "nome") + ".");
|
||||
break;
|
||||
} else {
|
||||
System.out.println("Errore: opzione non valida.");
|
||||
@@ -406,6 +443,10 @@ public class listaSpesa {
|
||||
} while (error);
|
||||
} else {
|
||||
System.out.println("Errore: prodotto non trovato.");
|
||||
System.out.println("Provare a scrivere un"
|
||||
+ (useNomeProdotto ? " nome" : "a descrizione") + " più precis"
|
||||
+ (useNomeProdotto ? "o" : "a") + " o a ricercare per "
|
||||
+ (useNomeProdotto ? "descrizione" : "nome") + ".");
|
||||
pausa();
|
||||
}
|
||||
} while (scelta.equals("n") || !exit);
|
||||
@@ -441,11 +482,11 @@ public class listaSpesa {
|
||||
boolean ritorno = false;
|
||||
for (int i = 0; i < magazzino.length && !ritorno; i++) {
|
||||
if (isAlimentare) {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("Alimentare")) {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("Alimentare") && magazzino[i] != null) {
|
||||
ritorno = magazzino[i].getNome().contains(nome) || magazzino[i].getDescrizione().contains(nome);
|
||||
}
|
||||
} else {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("NonAlimentare")) {
|
||||
if (magazzino[i].getClass().getSimpleName().equals("NonAlimentare") && magazzino[i] != null) {
|
||||
ritorno = magazzino[i].getNome().contains(nome) || magazzino[i].getDescrizione().contains(nome);
|
||||
}
|
||||
}
|
||||
@@ -453,14 +494,15 @@ public class listaSpesa {
|
||||
return ritorno;
|
||||
}
|
||||
|
||||
static Prodotto ricercaProdotto(String p_nomeODescrizione) {
|
||||
Prodotto ritorno = null;
|
||||
boolean exit = false;
|
||||
for (int i = 0; i < magazzino.length && !exit; i++) {
|
||||
if (magazzino[i].getNome().contains(p_nomeODescrizione)
|
||||
|| magazzino[i].getDescrizione().contains(p_nomeODescrizione)) {
|
||||
ritorno = magazzino[i];
|
||||
exit = true;
|
||||
static Prodotto[] ricercaProdotto(String p_nomeODescrizione) {
|
||||
Prodotto ritorno[] = null;
|
||||
int dimensione = 0;
|
||||
for (Prodotto prodotto : magazzino) {
|
||||
if (prodotto.getNome().contains(p_nomeODescrizione)
|
||||
|| prodotto.getDescrizione().contains(p_nomeODescrizione)) {
|
||||
ritorno = ritorno == null ? new Prodotto[1] : Arrays.copyOf(ritorno, dimensione + 1, ritorno.getClass());
|
||||
ritorno[dimensione] = prodotto;
|
||||
dimensione++;
|
||||
}
|
||||
}
|
||||
return ritorno;
|
||||
@@ -535,7 +577,7 @@ public class listaSpesa {
|
||||
Alimentare alimentari[] = null;
|
||||
for (Prodotto prodotto : magazzino) {
|
||||
if (prodotto.getClass().getSimpleName().equals("Alimentare")) {
|
||||
alimentari = Arrays.copyOf(alimentari, dimensione + 1, alimentari.getClass());
|
||||
alimentari = alimentari == null ? new Alimentare[1] : Arrays.copyOf(alimentari, dimensione + 1, alimentari.getClass());
|
||||
alimentari[dimensione] = (Alimentare) prodotto;
|
||||
dimensione++;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user