Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich sitze vor der folgenden Aufgabe und weiß nicht was an meinem Java-Code falsch ist... need Help.
Aufgabe: Erstelle ein Programm das die Fakultät einer Zahl berechnet.
Mein Code:
Java:
currentPost.edit();
public class AufgabeSieben
{
public static void main (String [] args)
{
System.out.println("Bitte geben Sie eine natürliche Zahl ein!");
try
{
int a;
long b;
a=Keyboard.readInt();
if (a<1)
{
System.out.println("Das war keine natürliche Zahl!");
}
for (a=Keyboard.readInt();a>1;a++) <----------------
{
b=b*a;
}
System.out.println("Die Fakultät von:" +a);
System.out.println("ist:" +b);
}
catch (Exception e)
{
System.out.println("Fehler");
}
}
}
Die oben mit einem Pfeil gekennzeichnete Stelle [Zeile 16] spuckt er mir als Fehler aus... Wo ist dort der Fehler?
Danke schonmal
Du kannst das viel einfacher und dir verständlicher machen, indem du einfach das ganze mit ner while schleife regelst.
Schau mal:
Java:
currentPost.edit();
public class AufgabeSieben
{
public static void main (String [] args)
{
System.out.println("Bitte geben Sie eine natürliche Zahl ein!");
try
{
int a;
long b;
a=Keyboard.readInt();
if (a<1)
{
System.out.println("Das war keine natürliche Zahl!");
}
///////////////////////////////
while (a>1) <----------------
{
a=Keyboard.readInt();
b=b*a;
//Möglicher weise auch noch das:
// a++;
}
///////////////////////////////
System.out.println("Die Fakultät von:" +a);
System.out.println("ist:" +b);
}
catch (Exception e)
{
System.out.println("Fehler");
}
}
}
Ich habe möglicher weise a++, weil ich denke, dass von dem benutzer so lange eine zahl erzwungen werden soll, bis er auch eine natürliche Zahl eingibt.
Java:
currentPost.edit();
public class AufgabeSieben
{
public static void main (String [] args)
{
System.out.println("Bitte geben Sie eine natürliche Zahl ein!");
try
{
int a;
long b;
Scanncer sc = new Scanner(System.in);
a=sc.nextInt();
if (a<1)
{
System.out.println("Das war keine natürliche Zahl!");
}
///////////////////////////////
while (a>1) <----------------
{
sc = new Scanner(System.in);
a=sc.nextInt();
b=b*a;
a++;
}
///////////////////////////////
System.out.println("Die Fakultät von:" +a);
System.out.println("ist:" +b);
}
catch (Exception e)
{
System.out.println("Fehler");
}
}
}
Verstehst du?
Aber weißt du, es gibt die Klasse Scanner, mit der geht das auch, mit der methode nextInt()
verstehst du?
Der Code würde dann so aussehen:
Folgende Fehlermeldung wird ausgespuckt:
AufgabeSieben.java:15: a is already defined in main(java.lang.String[])
for (int a=Keyboard.readInt();a>1;a++)
warum liest du a ein guckst ob es unter 1 ist (apropo es gibt auch die fakultät von 0) gibts was aus wenn dies der fall ist lässt aber das programm trotzdem witerlaufen?
danach überschreibst du a (egal welchen wert es hat) mit ner neuen eingabe und das in der for-schliefe??? und produzierst (geschweige denn es würde gehen) eine endlos schleife schließlich soll a ja über 1 sein (man kann allerdings da eingeben kann was man will) also is die bedingung der for-schleife sinnlos (beziehungsweise endlos xD)
also solltest du erstmal deine logik überdenken (zum fehler: da wär ne fehlermeldung nützlich)
anmerkung long dürfte übrigens nicht lange reichen für fakultäten brauchst normalerweise BigInteger
edit: du hast schon ne variable mit dem namen a kann nicht 2x existieren
wenn du sagst..
int a = 0;
und unten
if(int a...
sagt er... a is already defined ... a gibt es schon..
das int musst du weg nehmen, da du a oben schon definiert hast...