BigInteger: Wert per Methode zuweisen

Status
Nicht offen für weitere Antworten.

BlueDolphin

Mitglied
Hey,

ich möchte meiner BigInteger-Variable als Wert das Ergebnis meiner Methode zuweisen.
Leider klappt es nicht so wie ich dachte bzw. ich steige bei BigInteger nicht so richtig durch.
Kann man nur die vordefinierten Methoden verwenden?
Hier mal mein Quellcode:

Code:
static BigInteger fak( int n ) {
    
    	BigInteger big = BigInteger.ONE;

    	if ( n == 0 || n == 1 ) {
  
      	return big;
      	}

    	if ( n > 1 ) {
      		
      		for ( int i = 1; i <= n; i++ ) {
        		
        		big = big.multiply( BigInteger.valueOf(i) );
        		
        	}
		}
    	return big;
  	}

Code:
BigInteger n = new BigInteger((new BufferedReader(new InputStreamReader(System.in))).readLine());
BigInteger erg = new BigInteger(fak(n)); //hier klemmt es

Ich habs auch schonmal so probiert, aber hat auch nicht geklappt:

Code:
BigInteger erg = new BigInteger("0");
erg = new BigInteger(fak(n));

Danke schonmal

LG, Susi
 

0xdeadbeef

Top Contributor
Das Problem dürfte sein, daß BigInteger keinen Konstruktor hat, dem man wieder BigInteger übergeben kann.
Allerdings ist mir auch nicht ganz klar, warum Du nicht einfach eine direkte Zuweisung benutzt:
Code:
BigInteger erg = fak(n);
Hab's jetzt nicht ausprobiert, aber sollte doch tun, oder?

Ansonsten gibt es IMHO nur einen Trick, eine BigInteger-Variable zu "klonen", nämlich die Konvertierung in einen String, den man dann wieder dem Konstruktor übergeben kann:
Code:
BigInteger a = BigInteger.ZERO;
BigInteger b = new BigInteger(a.toString());
Leider haben ja BigInteger und BigDecimal keine "clone()"-Methode.

Nebenbei: "BigInteger("0")" ist unnötig, weil es ja die "final static"-Deklaration von 0 (ZERO) und 1 (ONE) gibt.
 

BlueDolphin

Mitglied
hm...

Code:
BigInteger erg = fak(n);

...funktioniert :oops:

nun muss ich nur noch die Methode auf BigInteger umstricken, aber das werd ich schon hinkriegen :### ...danke
 

0xdeadbeef

Top Contributor
Falls Du damit meinst, daß Du den Parameter auf BigInteger ausweiten möchtest: das ist kaum sinnvoll. Bereits die Fakultät des größten positiven 64bit-Integerzahl (long) ist so riesig groß, daß man sie weder berechnen noch darstellen möchte. Mach also aus dem int ein long und das sollte reichen. Die Berechnung großer Zahlen dauert dann mit diesem Algorithmus eh schon ewig.
Ein dramatisch schnellerer Algorithmus ist übrigens dieser hier:

Code:
class Factorial {

    private BigInteger f;
    private long N;

    private final BigInteger swing(long n) {
        long nN = this.N;
        long s = nN - 1 + ((n - nN + 1) % 4);
        boolean oddN = (nN & 1) != 1;

        for (; nN <= s; nN++) {
            if (oddN = !oddN)
                f = f.multiply(BigInteger.valueOf(nN));
            else
                f = (f.shiftLeft(2)).divide(BigInteger.valueOf(nN));
        }

        if (oddN)
            for (; nN <= n; nN += 4) {
                long m = ((nN + 1) * (nN + 3)) << 1;
                long d = (nN * (nN + 2)) >> 3;

                f = f.multiply(BigInteger.valueOf(m)).divide(BigInteger.valueOf(d));
            }
        else
            for (; nN <= n; nN += 4) {
                long m = (nN * (nN + 2)) << 1;
                long d = ((nN + 1) * (nN + 3)) >> 3;

                f = f.multiply(BigInteger.valueOf(m)).divide(BigInteger.valueOf(d));
            }
        this.N = nN;
        return f;
    }

    private final BigInteger recFactorial(int n) {
        if (n < 2)
            return BigInteger.ONE;
        BigInteger result = recFactorial(n / 2);
        return result.multiply(result).multiply(swing(n));
    }

    BigInteger factorial(int n) {        
        N = 1;
        f = BigInteger.ONE;
        return recFactorial(n);
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
E Division von BigInteger soll Gelitkommazahl liefern Java Basics - Anfänger-Themen 46
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
D Wie vergleiche ich zwei BigInteger Werte? Java Basics - Anfänger-Themen 1
TheSorm erstellen von BigInteger Java Basics - Anfänger-Themen 24
A Long in BigInteger Java Basics - Anfänger-Themen 3
R BigInteger zusammensetzen Java Basics - Anfänger-Themen 8
G Methoden BigInteger Zufallszahlen erzeugen Java Basics - Anfänger-Themen 5
G Datentypen BigInteger */: Int Java Basics - Anfänger-Themen 5
B BigInteger , rechen problem Java Basics - Anfänger-Themen 8
M BigInteger mit Decimalzahlen? Java Basics - Anfänger-Themen 5
R Bestimmte Stellen eines BigInteger Java Basics - Anfänger-Themen 7
T String spliten und in BigInteger umwandeln Java Basics - Anfänger-Themen 3
L Compiler-Fehler Fehler bei BigInteger Java Basics - Anfänger-Themen 3
A wurzel von bigInteger Java Basics - Anfänger-Themen 4
A Problem mit BigInteger und Schleife Java Basics - Anfänger-Themen 13
A Schleife mit BigInteger Java Basics - Anfänger-Themen 18
A umwandlung biginteger in int[] Java Basics - Anfänger-Themen 9
P Methode BigInteger-Array übergeben als Referenz Java Basics - Anfänger-Themen 6
P Bits bei BigInteger abprüfen Java Basics - Anfänger-Themen 2
D BigInteger potenzieren und anschließend Modulo Java Basics - Anfänger-Themen 7
A BigInteger? Java Basics - Anfänger-Themen 4
K String(ASCII) to BigInteger Java Basics - Anfänger-Themen 2
Z BigInteger Methoden und deren Übergabe Java Basics - Anfänger-Themen 3
G Quersumme berechnen (BigInteger) Java Basics - Anfänger-Themen 3
G array (BigInteger) durchsuchen Java Basics - Anfänger-Themen 2
G BigInteger Java Basics - Anfänger-Themen 6
I BigInteger + Array Java Basics - Anfänger-Themen 4
G BigInteger zu int Java Basics - Anfänger-Themen 2
Linad Die Methode pow in der BigInteger Klasse Java Basics - Anfänger-Themen 4
N String zu BigInteger Java Basics - Anfänger-Themen 14
G BigInteger und Modulo Java Basics - Anfänger-Themen 3
M brauche Hilfe zu BigInteger Java Basics - Anfänger-Themen 2
M Variablen Werte nach setzen, bei Abfrage wieder alter Wert Java Basics - Anfänger-Themen 11
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
A Negativ-Wert Java Basics - Anfänger-Themen 4
R finaler Wert in outerMethod von method in InnerMethodClass Java Basics - Anfänger-Themen 2
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Datum als Variable wert Java Basics - Anfänger-Themen 4
melisax Java Array Wert an bestimmtem Index angeben Java Basics - Anfänger-Themen 14
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
Ostkreuz Wert von Arrays summieren Java Basics - Anfänger-Themen 1
J Array Mittleren Wert bestimmen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
K Java gleicher Wert von Zahlen? Java Basics - Anfänger-Themen 5
M Erste Schritte While Schleife / Ausgabe von buchstabe & ASCII Wert Java Basics - Anfänger-Themen 4
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S Runden auf den niedrigsten Wert Java Basics - Anfänger-Themen 10
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
T Mit jedem Wert in der for-Schleife weiter arbeiten Java Basics - Anfänger-Themen 3
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
sserio TXT-Datei Auslesen und den Wert jedes Namen ausrechnen etc. Java Basics - Anfänger-Themen 37
M Warum return die Methode den Wert nicht Java Basics - Anfänger-Themen 5
I Historisierung - Alter Wert, Neuer Wert... wie speichern? Java Basics - Anfänger-Themen 44
J Wert in Dropdown Menü kursiv schrieben Java Basics - Anfänger-Themen 19
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
M Wie kann eine Methode für ein vorhandenes "Array von char" einen Index-Wert zurückliefern? Java Basics - Anfänger-Themen 3
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
M Wie kann ich festlegen, dass ein Attribut maximal den Wert 0 erreicht, also nicht in den negativen Bereich fällt? Java Basics - Anfänger-Themen 4
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
U Ascii wert verschieben, wie möglich? Java Basics - Anfänger-Themen 3
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
B in einem Array den nächstgelegenen Wert zu einem eingabewert finden Java Basics - Anfänger-Themen 8
D Einen boolischen Wert aus einer Methode in einer anderen Klasse aufrufen? Java Basics - Anfänger-Themen 11
T Algorithmus für Index mit min-Wert Java Basics - Anfänger-Themen 2
J Wert zurückgeben über get Methode Java Basics - Anfänger-Themen 8
E Slider - Wert übergeben und überschreiben Java Basics - Anfänger-Themen 5
G Input/Output getText() gibt keinen Wert! Java Basics - Anfänger-Themen 13
NaZuRe Geld(Wert) von der public static void main in die public static void Blackjack Java Basics - Anfänger-Themen 2
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
S Aus verschachtelter ArrayList auf einen Wert zugreifen Java Basics - Anfänger-Themen 4
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
T Feststellen, dass Wert zu groß; Caesar Chiffre Java Basics - Anfänger-Themen 3
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
B Map<String, FilterMeta, wie Wert bekommen? Java Basics - Anfänger-Themen 4
ms_cikar Den Wert einer Hex. value bestimmten. Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V Boolean Wert nicht richtig erkannt Java Basics - Anfänger-Themen 4
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
1 Array nimmt falschen Wert auf! Java Basics - Anfänger-Themen 2
S Erste Schritte Button einen Wert zuweisen & diesen ausgeben Java Basics - Anfänger-Themen 2
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
V_Fynn03 Erste Schritte Einen Wert in ein TextField einfügen aus einer anderen Klasse Java Basics - Anfänger-Themen 3
J Wert zwischen JFrames übergeben Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
P Verzweigungen Wert zurück geben Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben