Ciao, sto scrivendo un programma sugli array, in particolare il programma mi chiede di creare 2 array, uno di stringhe composto da 5 elementi(nomi di fiori) ed il secondo è di tipo double sempre di 5 elementi(i prezzi associati ai nomi dei fiori). devo fare(e ho fatto) un programma che legge il nome del fiore e la quantità desiderata, localizza il nome del fiore, lo associa al suo prezzo in base all'indice dell'array e infine calcola e visualizza il prezzo. il programma che ho fatto è questo, posto il codice poi vi dico il problema che, per quanto vi possa sembrare banale, non so come risolvere:
import java.util.Scanner;
public class ConteggioFiori {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] fiore = {"petunia", "viola", "rosa", "violetta", "garofano" };
double[] prezzo = {0.50, 0.75, 1.50, 0.50, 0.80};
double somma = 0.0;
boolean ripeti = false;
String fioreScelto;
boolean conferma = false;
do{
do{
System.out.print("inserisci il nome del fiore che desideri: ");
fioreScelto = scanner.nextLine();
if(fioreScelto.equalsIgnoreCase(fiore[0]) || fioreScelto.equalsIgnoreCase(fiore[1])
|| fioreScelto.equalsIgnoreCase(fiore[2]) || fioreScelto.equalsIgnoreCase(fiore[3]) || fioreScelto.equalsIgnoreCase(fiore[4]))
conferma = true;
else
System.out.println("non abbiamo questo fiore");
} while(conferma == false);
System.out.println("inserisci il numero dei fiori che vuoi di quelli appena scelti: ");
int numeroFiore = scanner.nextInt();
for(int i = 0; i < 5; i++) {
if(fioreScelto.equals(fiore[i])) somma += (prezzo[i] * numeroFiore);
}
System.out.println("vuoi altri fiori? si o no");
String risposta = scanner.nextLine();
if (risposta.equalsIgnoreCase("no")) ripeti = true;
} while(ripeti == false);
System.out.println("devi pagare " + somma + "€");
}
}
A causa del problema non posso proseguire e fare i controlli per vedere la correttezza. ho aggiunto alcune cose che il programma non chiedeva espressamente: se in genere il libro chiede di fare A provo sempre in tutti i modi di fare A+.
il libro non chiedeva di fare la ripetizione(così da creare un bouquet completo piuttosto che un solo fiore), così ho aggiunto il do-while per creare un mazzo di fiori più complesso ed ho aggiunto l'intero do-while casomai l'input fosse sbagliato(sarebbe stato meglio un try-catch ma fa niente!).
il problema è che quando devo inserire il "si" o "no" non posso farlo perchè il compilatore passa all'input successivo: è come se il return(ritorno a capo) fosse immagazzinato nella variabile automaticamente e quindi il programma passa al punto successivo.
non capisco il perchè: nextLine serve proprio a questo no? serve per l'input di una stringa ma scarta il "\n".. allora perchè me lo ritrovo negli input successivi? ho provato a sostituire il nextLine con un next: come risultato ho avuto lo stesso problema, ma alla variabile successiva(sebbene sapevo che non avrebbe risolto niente, anzi anche peggiorato visto che il next utilizza il carattere spazio come delimitatore).
grazie infinite a chi risponderà e buona giornata