Erste Schritte Negative Zahlen als Fakultät ablehnen

Crazyyzarc

Mitglied
Ich möchte dass wenn der Benutzer eine negative Zahl eingibt, dass er wieder aufgerufen wird eine neue Zahl einzugeben anstatt wie bei mir jetzt das Programm zu cutten.
Java:
import java.util.Scanner;


public class Fakultaet 
{
	public static void main (String args[])
	{
		int number1 = 0;
		int fakultaet = 1;
		Scanner scan = new Scanner(System.in);
		System.out.print("!");
		number1 = scan.nextInt();
		while (number1 < 0)
		{
			System.out.println("Im Minusbereich gibt es keine Fakultät");
			return;
		}
		
		while (true)
		{
			if (number1 <= 1)
			{
				break;
			}
			
			fakultaet*=number1;
			number1--;
		}
		System.out.println(fakultaet);
	}

}
 
Wie wäre es, wenn du die Zahlenabfrage und die Überprüfung der Zahl in zwei neue Methoden packst, dann kannst du bei der Überprüfung direkt wieder die Zahlenabfrage rekursiv aufrufen, falls sie nicht stimmt. So in etwa?
Java:
import java.util.Scanner;

public class Fakultaet {
	
	int number1 = 0;
	int fakultaet = 1;
	
	public static void main(String args[]) {
		new Fakultaet();
	}

	Fakultaet() {
		requestNum();

		while (true) {
			if (number1 <= 1) {
				break;
			}

			fakultaet *= number1;
			number1--;
		}
		System.out.println(fakultaet);
	}

	void requestNum() {
		//TODO
		checkNum(number1);
	}	

	void checkNum(int i) {
 	        //TODO
                else{
                      requestNum()
                }
	}

}
Falls du nicht weiterkommen solltest, habe ich das Programm auch zu Ende geschrieben, könnte es also auch ohne offene TODOs Posten 😉
Aber ich glaube den Rest schaffst du alleine 😉

Gruß BK
 
Zuletzt bearbeitet:
Rekursiv war hier der falsche Ausdruck, da das ja nicht die selbe Methode ist, aber von der Art her ist das so, als ob es rekursiv wäre. Wenn du den checkNum() Teil auch noch in die requestNum() Methode reintust, dann ist es rekursiv 😉
 

Zurück
Oben