Fakultät iterativ, Quellcode Probleme

Status
Nicht offen für weitere Antworten.

public_class

Mitglied
HEy Leute ich bin hier neu im Forum und frage mich, ob ihr mir mit meinem interativen programm helfen könnt, es soll Fakultäten berechen, aber anscheinend stimmt etwas mit meinem int oder long nicht, aber ich komm einfach nicht drauf.. sitz jetzt schon was länger dran, also wenn mir jemand die augen öffnen kann BITTE
Java:
import javax.swing.JOptionPane; 

public class Fakultät { 
public long n; 


public Fakultät () 
{ 
String input = JOptionPane.showInputDialog("Bitte geben Sie die Zahl ein)"); 
n = Integer.parseInt(input); 
ausgabe(n); 
} 

public void ausgabe(long n) 
{ 
System.out.println("Die Fakultät von "+n+" = "+fakul(n)); 
} 


public static void main(String[] args) 
{ 
Fakultät faku = new Fakultät(); 

} 

public long faku(long i) 
{ 
if (i==0) 
{ 
return 1; 

} 

else 
{ 
//ausgabe (n) 
return i 
*faku(i-1); 
} 
} 

public long faulit (long n) 
{ 
long ergebnis = 1; 
for (;n>0;n--) 
{ 
ergebnis = ergebnis * n; 
} 

ausgabe (ergebnis); 
return ergebnis; 


} 
}
ich hoffe auf meinen ersten post hier bekomme ich ne antwort, danke schon mal im vorraus...;(
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
hi, willkommen im forum :D

1. Sache
Java:
public void ausgabe(long n) { 
    System.out.println("Die Fakultät von "+n+" = "+fakul(n));  //was, bzw. wo ist fakul !?
}
fakul wurde nich im Code definiert :bahnhof:

2. Sache (angenommen obige methode würde eine der 2 definierten berechnungen aufrufen)
Java:
public long faulit (long n) { 
    long ergebnis = 1; 
    for (;n>0;n--) { 
        ergebnis = ergebnis * n; 
    } 
 
    ausgabe (ergebnis); //ausgabe ruft doch wieder eine berechnung auf !?
    return ergebnis; 
}
deine Ausgabe ruft selbst die Berechnung einer Fakultät auf, das was du hier hast läuft dann sozusagen öfter als nötig ab.

Lösung:
Code:
ausgabe(faulit(n))
und in der Ausgabe selbst KEIN Aufruf einer Berechnung mehr, macht auch kein Sinn, denn die Methode heisst ja nur "ausgabe" :D

3.? Was funktioniert eigentlich nicht, hast du Exceptions, ist die Ausgabe fehlerhaft, wenn ja was siehst du etc. :D
 
Zuletzt bearbeitet:

public_class

Mitglied
tja, der debugger sagt wie schon gesagt immer, dass etwas mit meinem int / long nicht stimmt, also dachte ich vllt hatte ich die irgendwie durcheinander gebracht
 

ARadauer

Top Contributor
Java:
import javax.swing.JOptionPane; 

public class Fakultät { 
   public long n; 


   public Fakultät () 
   { 
      String input = JOptionPane.showInputDialog("Bitte geben Sie die Zahl ein)"); 
      n = Integer.parseInt(input); 
      ausgabe(n); 
   } 

   public void ausgabe(long n) 
   { 
      System.out.println("Die Fakultät von "+n+" = "+faulit(n)); 
   } 


   public static void main(String[] args) 
   { 
      Fakultät faku = new Fakultät(); 

   } 

   public long faku(long i) 
   { 
      if (i==0) 
      { 
         return 1; 

      } 

      else 
      { 
         //ausgabe (n) 
         return i 
         *faku(i-1); 
      } 
   } 

   public long faulit (long n) 
   { 
      long ergebnis = 1; 
      for (;n>0;n--) 
      { 
         ergebnis = ergebnis * n; 
      } 

      //ausgabe (ergebnis); 
      return ergebnis; 


   } 
}
stimmt eh soweit...

Bitte poste nächste mal saubere Beispiele, die Methode fakul gibt es gar nicht, und wenn man statt der faku oder faulit aufruft, bekommt man einen stack overflow, da du darin nochmal eine ausgabe machst und die methode wieder und wieder aufrufst...
 

public_class

Mitglied
hey digaa, danke ich habs gerade versucht und zmindest die offensichtlichen fehler sind behoben, muss jetzt mal ausprobieren ob das programm jetzt noch sinn ergibt!! trotzdem danke, ich meld mich falls es immer noch nicht läuft ;-)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben