Hallo Leute!
Ich habe ein Riesen Problem und komme einfach nicht weiter! Ich hoffe jemand kann mir helfen!
Ich bin ein Java-Anfänger und tue mich damit noch recht schwer!
Hier die Aufgabe:
- wir sollen ein Fakultäts-Programm erstellen, in dem man eine Zahl eingibt und dann die Fakultät berechnet wird
- es soll der Datentyp "int" verwendet werden
- eine geeignete Schleife soll gewählt werde
- bei negativen eingaben soll eine Meldung + entsprechende Aufforderung zur erneuten Eingabe kommen
- beim Overflow-Fall soll eine Meldung kommen
- und es soll eine overflow-flag gesetzt werden
Mein bisheriger Code:
Ich kann mit diesem Code eine Zahl eintippen und diese wird als Fakultät ausgegeben. Eine Meldung bei negativen eingegeben Zahlen kommt ebenfalls! Nun ist das Problem, dass eigentlich nur bis 13! korrekte Werte rauskommen sollten und danach ein Overflow erscheinen sollte! Das passiert hier aber nicht!
Meine Frage also, stimmt der Code so überhaupt? Und wie löse ich das Overflow-Problem, sodass vor jeder eingabe oder Multiplikation geprüft wird, ob ein Overflow zustande kommt oder nicht?
Vielen Dank schonmal im Voraus!
Ich habe ein Riesen Problem und komme einfach nicht weiter! Ich hoffe jemand kann mir helfen!
Ich bin ein Java-Anfänger und tue mich damit noch recht schwer!
Hier die Aufgabe:
- wir sollen ein Fakultäts-Programm erstellen, in dem man eine Zahl eingibt und dann die Fakultät berechnet wird
- es soll der Datentyp "int" verwendet werden
- eine geeignete Schleife soll gewählt werde
- bei negativen eingaben soll eine Meldung + entsprechende Aufforderung zur erneuten Eingabe kommen
- beim Overflow-Fall soll eine Meldung kommen
- und es soll eine overflow-flag gesetzt werden
Mein bisheriger Code:
Java:
import java.util.Scanner;
class Fakultaet
{
public static void main (String[] args )
{
Scanner scan = new Scanner( System.in );
long n, fakultaet = 1;
System.out.println( "Geben Sie eine Zahl ein:" );
n = scan.nextLong();
if ( n >= 0 )
{
while ( n > 1 )
{
fakultaet = fakultaet * n;
n = n - 1;
}
System.out.println( "Fakultaet = " + fakultaet );
}
else
{
System.out.println("Keine negativen Zahlen!");
while( n < 0)
{
System.out.println( "Geben Sie erneut eine Zahl ein:" );
n = scan.nextLong();
if ( n >= 0 )
{
while ( n > 1 )
{
fakultaet = fakultaet * n;
n = n - 1;
}
System.out.println( "Fakultaet = " + fakultaet );
}
else
{
System.out.println("Keine negativen Zahlen!");
}
}
}
}
}
Ich kann mit diesem Code eine Zahl eintippen und diese wird als Fakultät ausgegeben. Eine Meldung bei negativen eingegeben Zahlen kommt ebenfalls! Nun ist das Problem, dass eigentlich nur bis 13! korrekte Werte rauskommen sollten und danach ein Overflow erscheinen sollte! Das passiert hier aber nicht!
Meine Frage also, stimmt der Code so überhaupt? Und wie löse ich das Overflow-Problem, sodass vor jeder eingabe oder Multiplikation geprüft wird, ob ein Overflow zustande kommt oder nicht?
Vielen Dank schonmal im Voraus!