Brauche Hilfe mit Fakultät!

  • Themenstarter Mister Mainframe
  • Beginndatum
Status
Nicht offen für weitere Antworten.
M

Mister Mainframe

Gast
Einen schönen Gruß an alle Forums Mitglieder. Ich bin neu hier und hätte mal eine Frage bzgl. einem kleinen Programm von mir, welches die Fakultät einer ganzen Zahl ausrechnet. Es handelt sich um genau zu sein um eine Übungsaufgabe aus dem neuen Java Buch von Dietmat Ratz.

Hier also der Code:

Code:
public class Fakultaet {

	public static void main(String[] positiveLong) {

			long n = Long.parseLong(positiveLong[0]);
			FakultaetsAlgo nummerEins = new FakultaetsAlgo(n);
			nummerEins.rechnung();
			nummerEins.getErgebnis();
	}
}

import java.math.*;

public class FakultaetsAlgo {

    private BigInteger zwischenErg;
    private BigInteger ergebnis = new BigInteger("1");
    private long eingabe;
    private StringBuffer puffer1 = new StringBuffer();
    private String stringI;

	public FakultaetsAlgo(long input) {

		eingabe = input;
	}

	public void rechnung() {

		for (long i = eingabe; i >= 1; i--) {

			puffer1.append(i);
			stringI = puffer1.toString();
			zwischenErg = new BigInteger(stringI);
			ergebnis = ergebnis.multiply(zwischenErg);
		}
	}

	public void getErgebnis() {

		System.out.println(eingabe + "! = " + ergebnis);
	}
}
Mein Problem ist nun, daß er für die Eingaben 0 und 1 die richtigen Ergebnisse ausspuckt (sprich: 1 und 1), aber leider ab der zwei viel zu hohe Ergebnisse liefert. Für 2! gibt er 42 als Ergebnis aus, für 3! bereits 30816.
Vielleicht kann ja jemand von euch mir sagen, wo ich mich in meinem Algorithmus vertan hab.

Vielen Dank im Voraus!
 

kampinada

Mitglied
Moin,

ich denke, du musst den puffer wieder leeren! Und: i > 1

Code:
for (long i = eingabe; i > 1; i--) { 
      if (i != eingabe ){
         puffer1.deleteCharAt((int) 0); 
      }
 

jptc.org

Bekanntes Mitglied
Der Algorithmus ist wirklich seltsam implementiert, aber wenns schön macht... :lol:

Für die Umwandlung von i in einen String nimmst Du einen StringBuffer und hängst immer die aktuelle Zahl ran. Nimmst Du als Eingabe eine 3 so sieht der StringBuffer gleich "3" aus, nach dem zweiten Schleifendurchlauf steht dann "32", nach dem Dritten "321" drin. Siehst du das Problem??

Wieso sagst Du nicht einfach:

Code:
for (long i = eingabe; i >= 1; i--) { 
   ergebnis = ergebnis.multiply(new BigInteger(String.valueOf(i))); 
}

Ich hoffe das konnte helfen. Der Code sollte relativ unperformant sein, da bei grossen N ziemlich viele temporäre Objekte angelegt werden.

Karsten Voigt
http://www.java-performance-portal.org
 
M

Mister Mainframe

Gast
Vielen Dank für die Antworten, werd's gleich mal probieren!
 
G

Gast

Gast
Gibt es auch eine "einfache" Methode zum berechnen der Fakultät? Bin newbie in sachen Java und Programmierung oO
 

Leroy42

Top Contributor
Die Berechnung der Fakultät hat mit OO rein gar nichts zu tun.
Code:
int fak(int n) {
  return n < 2 ? 1 : n*fak(n-1);
}

Wenn du mit BigInteger arbeiten willst, wird es natürlich etwas länger :wink:
 
G

Gast

Gast
Ich hab hier was schönes gefunde, was ich sogar verstehe:

long produkt = 1;

int i;
for( i=2; i<=n; ++i )
{
produkt *= i;
}
return produkt;


So, und wie mache ich jetzt die Ausgabe...?
 
D

Der Gast heißt Felydae

Gast
Ja genau das habe ich ja gemacht, aber er bringt mir da eine Fehlermeldung... Ich poste jetzt einfach mal den gesamten Code:

package myPack.graphics;

public class Aufgabe_85 {


public static long fakultät (long n) {


long produkt = 1;

int i;
for( i=2; i<=n; ++i )
{
produkt *= i;
}
return produkt;


}
System.out.println(produkt);
}



So und wenn ich das genau so stehen lasse erscheint die Fehlermeldung bei "produkt" ->

"Syntax error on token produkt, VariablaDeclaratorId expected after this token"
 
D

Der Gast heißt Felydae

Gast
Und wenn ich die Ausgabe IN die Methode reinschreibe, dann kommt "Unreachable Code"
 

Leroy42

Top Contributor
Mit der return-Anweisung verläßt du bereits die Methode

==> Erst ausgeben, dann returnen

Code:
package myPack.graphics; 

public class Aufgabe_85 { 
public static long fakultät (long n) { 
  long produkt = 1; 
  int i; 
  for( i=2; i<=n; ++i ) { 
    produkt *= i; 
  } 
  System.out.println(produkt); 
  return produkt; 
}

Und benutze in Zukunft code-Tags damit deine Einrückungen nicht verloren gehen.
 
S

SlaterB

Gast
entweder du schreibst die Ausgabe IN die Operation VOR dem return,

oder in irgendeine andere Operation, die dann den Rückgabewert ausgibt,
z.B. in der main-Operation, die das ganze aufruft,

allein in einer Klasse kann so ein Befehl nie stehen

(edit: mist da hat mein Browser wohl gecached ;) )
 
G

Guest

Gast
Hab das Programm mal schnll kopiert. Jedoch berechnez er mir nicht die richtige Fakultät. 3! ist doch z.b. 6, oder?
Vielleicht geb ich ja die Zahl auch falch ein , wo muss ich denn das machen. Nur um siche zu gehen.

Hier nochmal der Code

Code:
public class Aufgabe_85 {
	private static long produkt = 2;
	
public static long fakultät (long n) { 
   
  int i; 
  for( i=2; i<=n; ++i ) { 
    produkt *= i; 
  } 
  
  return produkt; 
}

public static void main (String []args){
	System.out.println(fakultät(produkt));
}
}
 

Leroy42

Top Contributor
Du mußt die Variable produkt auf jeden Fall lokal
zur Methode machen, ansonsten berechnet sie nur
beim allerersten Aufruf den richtigen Wert:

Code:
public static long fakultät (int n) { 
  long produkt = 1;
  for (int i=2; i<=n; ++i ) { 
    produkt *= i; 
  } 
  return produkt; 
}

funktioniert natürlich nur für positive n
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Brauche Hilfe zu einem Code Java Basics - Anfänger-Themen 5
J Brauche Hilfe bei for-each Aufgabe Java Basics - Anfänger-Themen 1
HeiTim Brauche Hilfe soll ein nummeriertes Feld ausgeben lassen Java Basics - Anfänger-Themen 17
J Brauche Hilfe bei Aufgabe Java Basics - Anfänger-Themen 4
H Brauche Hilfe Java Basics - Anfänger-Themen 2
H Brauche hilfe Java Basics - Anfänger-Themen 3
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
Leo0909 Ich brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 2
H Brauche Hilfe in Java Eclipse Programmieraufgabe Neuling Java Basics - Anfänger-Themen 3
D Brauche Dringend Hilfe...Prozedur/Funktionsprozedur Ergebnis augeben Java Basics - Anfänger-Themen 11
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
M Brauche Hilfe bei If-Scheifen Java Basics - Anfänger-Themen 2
F ich brauche Hilfe bei Listen Java Basics - Anfänger-Themen 13
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
E Ich Brauche Hilfe Java Basics - Anfänger-Themen 3
L Brauche Hilfe beim arbeiten mit Konstruktoren Java Basics - Anfänger-Themen 20
J Brauche Hilfe bei einer aufgabe Java Basics - Anfänger-Themen 1
S Brauche hilfe in Java [Fehler in mein Code]? Java Basics - Anfänger-Themen 2
B BITTE!! Ich brauche dringende Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 17
TpKey10 Ich brauche Hilfe Java Basics - Anfänger-Themen 14
F Ich brauche Hilfe bei Objektorientierter Programmierung... Java Basics - Anfänger-Themen 19
L Input/Output Wurzelzeichen in der Konsole ausgeben | Brauche Hilfe Java Basics - Anfänger-Themen 6
J Brauche Hilfe bei dieser Aufgabe Java Basics - Anfänger-Themen 3
T Brauche Hilfe um ein Programm zu verstehe Java Basics - Anfänger-Themen 4
C Ich brauche hilfe für meine Klausur Java Basics - Anfänger-Themen 13
J Brauche Hilfe !! Java Basics - Anfänger-Themen 8
R Spielfeldbegrenzung einfügen (Java)? Brauche Hilfe! Java Basics - Anfänger-Themen 15
C Brauche dringend Hilfe. Umfrage mit ja und nein in Java erstellen? Java Basics - Anfänger-Themen 12
U Brauche Hilfe bei Programmierung einer Produktdatenbank App Java Basics - Anfänger-Themen 4
P Brauche Hilfe bei ResultSet mit MySQL Java Basics - Anfänger-Themen 6
T Datentypen Brauche Hilfe bei Arrays Java Basics - Anfänger-Themen 3
U Brauche Hilfe bei Bisektionsverfahren Java Basics - Anfänger-Themen 23
E Erste Schritte brauche hilfe zum verstehen einer Klasse(Tiefensuche) Java Basics - Anfänger-Themen 17
I Brauche Hilfe bei Schleifen Java Basics - Anfänger-Themen 18
B Java Graphen zeichnen - Brauche Hilfe Java Basics - Anfänger-Themen 9
S brauche hilfe bei Fehlersuche Java Basics - Anfänger-Themen 7
M JDK installieren Brauche dringend Hilfe Java Basics - Anfänger-Themen 2
L Brauche Hilfe bei Preisberechnungspogramm Java Basics - Anfänger-Themen 1
D Hilbert und Peano Kurve, ich brauche Hilfe Java Basics - Anfänger-Themen 4
S Brauche hilfe bei Pong (JFrame) Java Basics - Anfänger-Themen 2
V Hilfe-brauche eine Idee! Java Basics - Anfänger-Themen 5
R Brauche Hilfe beim fertigstellen eines Chat programms Java Basics - Anfänger-Themen 8
A Erste Schritte Brauche Hilfe Java Basics - Anfänger-Themen 2
D Brauche Hilfe für mein übungsprogramm Java Basics - Anfänger-Themen 16
S Klassen Brauche Hilfe bei Erstellung einer Klasse für einen Tachenrechner!!! Java Basics - Anfänger-Themen 6
W Brauche hilfe bei Hausübung Java Basics - Anfänger-Themen 10
D Brauche Hilfe bei Modulo (Übungsaufgabe) Java Basics - Anfänger-Themen 14
X Brauche Hilfe bei printOnScreen Methode !!! Java Basics - Anfänger-Themen 2
H mysql brauche hilfe, wer kann eine (längere) aufgabe für mich erledigen Java Basics - Anfänger-Themen 2
K Erste Schritte Brauche Hilfe bei Starten des Programms Java Basics - Anfänger-Themen 11
B Erste Schritte HILFE Brauche ein Beispiel für korrekte Syntax mit Semantikfehlern Java Basics - Anfänger-Themen 6
H Java von Kopf bis Fuß: Brauche Hilfe Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
S brauche hilfe beim fehler finden Java Basics - Anfänger-Themen 2
S Erste Schritte BlueJ-Aufgabe: Programmcode / Brauche dringend Hilfe !!! Java Basics - Anfänger-Themen 37
A Brauche Hilfe bei Division von Feldzahl durch Ganzzahl Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 3
F Java-Anfänger, brauche Hilfe Java Basics - Anfänger-Themen 2
C Brauche dringend hilfe beim exception im code Java Basics - Anfänger-Themen 5
G Brauche bitte Hilfe, bei umgekehrter Ausgabe!! Java Basics - Anfänger-Themen 6
B Erste Schritte Brauche Hilfe für ein UML Diagramm Java Basics - Anfänger-Themen 7
S ICh brauche Hilfe,weil Java in der Schule Java Basics - Anfänger-Themen 11
B Brauche Hilfe mit Aufgaben mit dem JavaEditor Java Basics - Anfänger-Themen 8
I Primzahlenberechnung [Brauche Hilfe] Java Basics - Anfänger-Themen 5
T brauche HILFE beim Junit test:eek: Java Basics - Anfänger-Themen 11
F Reader - brauche Hilfe Java Basics - Anfänger-Themen 19
T Brauche Hilfe bei Variabeln Java Basics - Anfänger-Themen 4
J Brauche Hilfe mit replaceFirst Java Basics - Anfänger-Themen 10
M Brauche Hilfe bei Struktogramm Java Basics - Anfänger-Themen 9
T Datentypen brauche dringende hilfe!dezi in Asci umwandeln! Java Basics - Anfänger-Themen 4
X DB4O Collections and Arrays, brauche dringend Hilfe! Java Basics - Anfänger-Themen 3
B brauche hilfe bei funktion erstellen Java Basics - Anfänger-Themen 8
S Brauche Hilfe bei if/else Java Basics - Anfänger-Themen 3
N Brauche Hilfe mit Kollisionserkennung! Java Basics - Anfänger-Themen 16
J Brauche Hilfe bei Methode Java Basics - Anfänger-Themen 9
Y Brauche Hilfe beim Programm Java Basics - Anfänger-Themen 83
G 2 dim. Strsing Arrays brauche Hilfe Java Basics - Anfänger-Themen 20
A Brauche hilfe String untertrennen Java Basics - Anfänger-Themen 12
L Brauche bitte dringend Hilfe für Klausur Java Basics - Anfänger-Themen 8
H Brauche bei einen bsp hilfe! Java Basics - Anfänger-Themen 2
D Währungsrechner brauche Hilfe Java Basics - Anfänger-Themen 10
R Vokabeltrainer / Brauche Hilfe Java Basics - Anfänger-Themen 8
L Brauche Hilfe! Java Basics - Anfänger-Themen 8
S WAV-DATEIEN INTERPRETIEREN UND UMWANDELN Brauche Hilfe Java Basics - Anfänger-Themen 3
A Brauche Hilfe mit einer Forschleife Java Basics - Anfänger-Themen 20
N brauche Hilfe Stringverarbeitung Java Basics - Anfänger-Themen 9
JeromeM90 (Brauche Hilfe) Binär- in Dezimalzahlkonverter Java Basics - Anfänger-Themen 8
M Brauche Hilfe bei Javaapplication für JuFo Java Basics - Anfänger-Themen 21
M Brauche Hilfe beim Verstehen vom Quellcode Java Basics - Anfänger-Themen 4
A brauche hilfe ( gpanel und n-ecke) Java Basics - Anfänger-Themen 11
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 3
V Brauche Hilfe beim Programmieren Java Basics - Anfänger-Themen 9
S Brauche Hilfe mit waitFor() Java Basics - Anfänger-Themen 4
N Brauche dringende Hilfe Java Aplett läuft nicht! Java Basics - Anfänger-Themen 3
D Brauche Hilfe: Funktion zum Kombinieren von Werten Java Basics - Anfänger-Themen 5
T Brauche Hilfe: Access DB + Hashmap Java Basics - Anfänger-Themen 2
S brauche hilfe beim dateien kopieren / bearbeiten Java Basics - Anfänger-Themen 3
E brauche hilfe beim KeyListener Java Basics - Anfänger-Themen 4
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben