Programma in java

urahara1
ciao a tutti sto studiando le basi dell'if else, svolgendo un esercizio di java in cui mi viene chiesto di creare un programma che fa inserire all’utente un numero naturale e che visualizza all’utente il fattoriale di tale numero..,ho le 2 classi già scritte inputwindow e outputwindow ...io ho creato 2 classi
la prima è

class Fattoriale{
int n;
int f;
if (n==0)
return f=1;
else
return f=n*fattoriale(n-1);
}

la seconda che contiene il main è
class ProvaFattoriale{
public static void main(String[] args);
InputWindow in=new InputWindow();
int n=in.readInt("inserisci un numero naturale");
OutputWindow out=new OutputWindow();
out.writeln("il fattoriale è: " + ? );
}
}

al posto del ? cosa devo mettere? si può fare con un unica classe questo piccolo programma?

Risposte
Howard_Wolowitz
Innanzitutto è consigliabile mettere il codice all'interno dell'apposito tag code per una migliore lettura dello stesso.
Sì può fare come hai tentato di fare tu, credo ti manchi il concetto di metodo, simile a quello di funzione dei linguaggi di programmazione procedurali esempio C... il tutto può essere sviluppato in maniera modulare con le seguenti due classi:
Fattoriale.java
class Fattoriale{
	public static int calcola(int n){
		if(n <= 1){
			return 1;	
		}else{
			return n * calcola(n - 1);	
		}
	}
}

ProvaFattoriale.java
class ProvaFattoriale{
	public static void main(String[] args){
		InputWindow in = new InputWindow();
		int n = in.readInt("inserisci un numero naturale");
		OutputWindow out = new OutputWindow();
		out.writeln("il fattoriale è: " + Fattoriale.calcola(n));
	}
}

Se invece vuoi fare tutto in una classe, o meglio nel main di una classe, procedi così:
class ProvaFattoriale{
	public static void main(String[] args){
		InputWindow in = new InputWindow();
		int n = in.readInt("inserisci un numero naturale");
		Scanner tastiera = new Scanner(System.in);
		int n = tastiera.nextInt();
		int fact = 1;
		while(n > 0){
			fact = n * fact;
			n = n - 1;	
		}	
		OutputWindow out = new OutputWindow();
		out.writeln("il fattoriale è: " + fact);
	}
}

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.