Leggere tramite l'argomento del metodo main() un argomento fornito

di il
4 risposte

Leggere tramite l'argomento del metodo main() un argomento fornito

Buongiorno a tutti, per esercizio devo scrivere un programma che tramite un metodo statico ricorsivo mi calcoli il fattoriale inserito dall'utente. Ho scritto un programma che calcola il fattoriale solamente che come richiesta aggiuntiva devo fare in modo che il programma legga il numero tramite l'argomento del metodo main(), in modo tale che digitando ad esempio:
java Fattoriale 5
il programma calcoli il fattoriale di 5.
Il codice che ho scritto finora è questo:
import java.util.Scanner;
public class Fattoriale {
static int ricorsione(int x) {
int fattoriale;
if(x == 0) {
fattoriale = 1;
} else {
fattoriale = x * ricorsione(x - 1);
}
return fattoriale;
}
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
int numero = sc.nextInt();
System.out.println(ricorsione(numero));
}
}
il problema è che per fare si che il programma mi calcoli il fattoriale, prima di digitare il numero da calcolare, devo prima digitare invio.
Grazie in anticipo ragazzi

4 Risposte

  • Re: Leggere tramite l'argomento del metodo main() un argomento fornito

    zioalens ha scritto:


    Ho scritto un programma che calcola il fattoriale solamente che come richiesta aggiuntiva devo fare in modo che il programma legga il numero tramite l'argomento del metodo main(), in modo tale che digitando ad esempio:
    java Fattoriale 5
    In tal caso il args del main sarà un array di lunghezza 1 con all'indice 0 una stringa "5".

    Dato che hai usato Scanner, puoi benissimo usarlo anche per questo. Scanner infatti può essere creato anche con un String come "sorgente".
    La cosa che potresti addirittura fare (ma non so se è richiesto/accettato dal tuo esercizio) sarebbe fare in modo che il tuo programma funzioni con parametro all'avvio O in alternativa da standard-input (da System.in).
  • Re: Leggere tramite l'argomento del metodo main() un argomento fornito

    andbin ha scritto:


    zioalens ha scritto:



    Dato che hai usato Scanner, puoi benissimo usarlo anche per questo. Scanner infatti può essere creato anche con un String come "sorgente".
    La cosa che potresti addirittura fare (ma non so se è richiesto/accettato dal tuo esercizio) sarebbe fare in modo che il tuo programma funzioni con parametro all'avvio O in alternativa da standard-input (da System.in).
    non ho capito.. devo fare una cosa del tipo String scanner = scanner.nextLine() ?
    Scusa ma non ho capito nemmeno la seconda parte... sono riuscito a farlo andare solamente scrivendo "java Fattoriale" per poi premere invio e digitare il numero che voglio calcolare...
  • Re: Leggere tramite l'argomento del metodo main() un argomento fornito

    zioalens ha scritto:


    non ho capito.. devo fare una cosa del tipo String scanner = scanner.nextLine() ?
    No.

    Hai una stringa (dal args[0]), bene. Ora devi convertirla in int, ci sono almeno 2 strade: con Integer.parseInt(str) ... oppure visto che usavi Scanner, puoi costruire un Scanner passandogli la stringa (e userai nextInt() esattamente come già stavi facendo).
  • Re: Leggere tramite l'argomento del metodo main() un argomento fornito

    andbin ha scritto:


    zioalens ha scritto:


    non ho capito.. devo fare una cosa del tipo String scanner = scanner.nextLine() ?
    No.

    Hai una stringa (dal args[0]), bene. Ora devi convertirla in int, ci sono almeno 2 strade: con Integer.parseInt(str) ... oppure visto che usavi Scanner, puoi costruire un Scanner passandogli la stringa (e userai nextInt() esattamente come già stavi facendo).
    Grazie mille sei stato gentilissimo!!
Devi accedere o registrarti per scrivere nel forum
4 risposte