nico_tomb ha scritto:
Non trovo l'errore nel programma che sto cercando di realizzare.
Il codice è un po' confuso e contorto, con più cicli annidati che non rendono facile la comprensione.
La logica di calcolo del fattoriale è giusta, cioè il risultato è tecnicamente quello corretto del fattoriale.
Devi però tenere presente una cosa: il fattoriale si basa sul prodotto di una serie di numeri e quindi la grandezza del numero cresce MOLTO velocemente. Avendo usato un int (valore massimo 2147483647) il massimo fattoriale che puoi arrivare a calcolare senza casini è
12!
Da 13 in poi ottieni solo robaccia ... colpa del "overflow"
Comunque è un po' discutibile (ma non sbagliato di per sé) mescolare input con showInputDialog e con Scanner da System.in
E visto che serve in ogni caso un numero intero, non si capisce perché chiedi un double e non direttamente un int.
Inoltre (e questo è un problema/dubbio del tuo codice), il valore di ritorno di showInputDialog NON lo stai usando e il
while(risposta.equals("input")) alla fine NON ha senso perché stai confrontando 'risposta' (che è fisso a "No" fin dall'inizio) con un'altra stringa costante ("input").