Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl

Miriam Manda

Mitglied
Weiß jemand, warum dieser Code nicht funktioniert. Ist "long" nicht der Typ, um die größten Zahlen zu speichern?
Ein- und Ausgabe sollen jeweils Strings sein.


Java:
public class Fact {

       public static void main(String[] args) {

        System.out.println(factorial("4") + " (24 ist richtig)");
        System.out.println(factorial("1337") + " (3316........... (mit 5736 Ziffern) wäre korrekt.)");
       }

       public static String factorial(String x){
         long fact=1;
         String result="";
             for (int i=1; i <= Integer.parseInt(x); i++) {
             fact=fact*i;
             result = Long.toString(fact);
             }
          return result;
        }
}
 
Zuletzt bearbeitet:

Miriam Manda

Mitglied
Soll natürlich heißen:
Java:
System.out.println(factorial("2000") + " (3316........... (mit 5736 Ziffern) wäre korrekt.)");
 

Miriam Manda

Mitglied
+9.223.372.036.854.755.807! Dann hätte es mit 1337! schon auch nicht mehr funktioniert. Ich verstehe.
Kann ich dann gar keine Fakultäten berechnen mit Java?
 

KonradN

Super-Moderator
Mitarbeiter
Wenn die Standard Datentypen nicht ausreichen, dann muss man sich eigene Datentypen schaffen.

Und wie es der Zufall so will: so Anforderungen, die öfters vorkommen, sind oft Dutch Libraries abgedeckt.

Das Java Framework enthält BigInteger - Die Klasse willst Du Dir evtl. mal ansehen…
 

Miriam Manda

Mitglied
Ich bin auch gerade auf BigInteger gestoßen, aber erhalte noch die Meldung
Java:
BigInteger cannot be resolved to a type
obwohl ich schon
Code:
import java.math.*;
dazugefügt habe. Und den Befehl
Code:
BigInteger.toString(fact);
wird es voraussichtlich auch nicht geben.
 

Miriam Manda

Mitglied
Muß ich vielleicht in Eclipse noch den Zugriff von java.math auf Eclipse / die Klasse autorisieren? Denn Eclipse fragt weiterhin, ob es java.math importieren soll, obwohl ich schon der der ersten Zeile
Code:
import java.math.*;
eingetragen habe?
 

Miriam Manda

Mitglied
Ich hoffe, es ist eine Instanz von BigInteger, wenn ich die Instanz so verwende:
Code:
import java.math.*;

public class Fact {

       public static void main(String[] args) {

        System.out.println(factorial("4") + " (24 ist richtig)");
        System.out.println(factorial("2000") + " (3316........... (mit 5736 Ziffern) wäre korrekt.)");
       }

       public static String factorial(String x){
         BigInteger fact = 1;
         String result="";
             for (int i=1; i <= Integer.parseInt(x); i++) {
             fact=fact*i;
             result = BigInteger.toString(fact);
             }
          return result;
        }
}
 

KonradN

Super-Moderator
Mitarbeiter
Hast Du schon mit Klassen gearbeitet? Überlege einmal, was für Zuweisungen möglich sind. Wenn Du ein Auto haben willst: Dann lässt Du Dir doch auch kein Apfel geben (um dann mit dem Apfel einkaufen zu fahren ... irgendwie ist ein Apfel einfach kein Auto ...)

Die 1 ist ein Integer Literal also ein int. Das ist also kein BigInteger.
Du musst Dir also eine BigInteger Instanz erzeugen. Schau einfach mal in die verlinkte Dokumentation - vielleicht findest Du ja einen Konstruktor oder passnde Konstanten oder so ...

Und die Operatoren in Java sind nur für bestimmte Typen definiert und daher sind die nur zulässig für eben diese Typen (sowie für Typen, für die Java eine implizite Umwandlung vorsieht). Auf Instanzen ist es üblich, Methoden aufzurufen. Evtl. findest du ja in BigInteger paar Methoden, mit denen du etwas anfangen könntest.
 

Miriam Manda

Mitglied
Ich hab's. Vielen Dank für die freundliche Hilfe!
Java:
import java.math.*;

public class Fact {

       public static void main(String[] args) {       
        System.out.println(factorial("4") + " (24 ist richtig)");
        System.out.println(factorial("2000") + " (3316........... (mit 5736 Ziffern) wäre korrekt.)");
       }
      
       public static String factorial(String x){
           BigInteger fact = new BigInteger("1");
                
             for (int i=1; i <= Integer.parseInt(x); i++) {
             fact = fact.multiply(new BigInteger("" + i));
             }
              return fact.toString();
       }   
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
javapingu Hex String zu long Java Basics - Anfänger-Themen 2
Hanschyo String kann nicht Werte von Long annehmen Java Basics - Anfänger-Themen 2
F HashMap sortieren <String, Long> Java Basics - Anfänger-Themen 3
H TreeMap<> statt TreeMap<Long, String> Java Basics - Anfänger-Themen 2
A string bitweise in long umwandeln Java Basics - Anfänger-Themen 7
A Konvertierung String-->hex-->long Java Basics - Anfänger-Themen 7
W Long to String Java Basics - Anfänger-Themen 7
Spot84 long von getCreationDate in String umwandeln Java Basics - Anfänger-Themen 4
G String in Long casten Java Basics - Anfänger-Themen 2
G Konvertierung String in long type Java Basics - Anfänger-Themen 15
C Long -> String -> ArrayList adden -> Exception Java Basics - Anfänger-Themen 4
G long in string Java Basics - Anfänger-Themen 6
B String <> long --- Das ist doch nicht inkonvertibel? Java Basics - Anfänger-Themen 4
G Hexadezimalzahl von String in Long umwandeln Java Basics - Anfänger-Themen 3
A formatieren long(bytes) -> String Java Basics - Anfänger-Themen 2
M long nach String casten Java Basics - Anfänger-Themen 2
N x.toString(x); umwandlung von long in String Java Basics - Anfänger-Themen 3
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
MiMa Probleme mit Datentyp long ?? Java Basics - Anfänger-Themen 2
C Long value an Stringbuilder übergeben, equals Methode funktioniert nicht Java Basics - Anfänger-Themen 2
krgewb Long wird gerundet Java Basics - Anfänger-Themen 2
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Long Typ Java Basics - Anfänger-Themen 4
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
O Long[] in long Java Basics - Anfänger-Themen 3
D Compiler-Fehler Java long und int Java Basics - Anfänger-Themen 1
Harlequin Compiler-Fehler Text Adventure - "Long Output" Fehler Java Basics - Anfänger-Themen 3
W The type Long is not visible HashMap Java Basics - Anfänger-Themen 4
Orkanson Long Binär darstellen Java Basics - Anfänger-Themen 1
E Von Double zu Long umwandeln Java Basics - Anfänger-Themen 9
J Datentypen Literal überschreitet long-Range, dennoch als long an Variable übergeben Java Basics - Anfänger-Themen 9
T Bitte um Hilfe bei Aufgabe: Long zahl = Long.parseLong(args [0]); Java Basics - Anfänger-Themen 3
K Erste Schritte switch - Warum sind long/float/double/... nicht erlaubt? Java Basics - Anfänger-Themen 5
F Char in Long umwandeln? Java Basics - Anfänger-Themen 2
M Frage Long Wert in Java Java Basics - Anfänger-Themen 1
A Long in BigInteger Java Basics - Anfänger-Themen 3
T long wird ohne Nachkommastellen ausgegeben Java Basics - Anfänger-Themen 5
G Long und Frage zum Speicherplatz eines Arrays Java Basics - Anfänger-Themen 7
S OOP long prüfen Java Basics - Anfänger-Themen 5
B map.remove(long) Java Basics - Anfänger-Themen 5
G Rechnen mit Long Variablen Java Basics - Anfänger-Themen 4
N Zufälliger Long Java Basics - Anfänger-Themen 15
SheldoN Zahlen die über long-Wert hinausragen Java Basics - Anfänger-Themen 4
SheldoN Gibt es größere Datentypen als long? Java Basics - Anfänger-Themen 2
G Long oder int Vorzeichen entfernen Java Basics - Anfänger-Themen 3
M Datentypen Calender TimeInMillis - long number erzeugen? Java Basics - Anfänger-Themen 2
D Konvertierung UnsignedInt zu long Java Basics - Anfänger-Themen 5
A long Wert in hexadezimales Array umwandeln Java Basics - Anfänger-Themen 3
O 64bit- OS byte, short, int oder long bzw. float oder double? Java Basics - Anfänger-Themen 13
G Datentypen Ein long[]-Array. Java Basics - Anfänger-Themen 5
G Datentypen Eclipse akzeptiert 'long' nicht Java Basics - Anfänger-Themen 2
N Mit long rechnen Java Basics - Anfänger-Themen 2
B Long als Eingabeaufforderung Java Basics - Anfänger-Themen 3
H Long (64Bit) in 2 int (32Bit) zerlegen Java Basics - Anfänger-Themen 2
S Long und Float Frage Java Basics - Anfänger-Themen 2
N Datentypen Wurzel aus long ziehen Java Basics - Anfänger-Themen 4
O Runden - x/100 liefert long zurück Java Basics - Anfänger-Themen 7
A mdoulo methode mit long Java Basics - Anfänger-Themen 9
Binary.Coder Skalarprodukt mittels long und binärzahlen Java Basics - Anfänger-Themen 5
A Long zu Double Java Basics - Anfänger-Themen 4
B (long)1e9 Java Basics - Anfänger-Themen 6
V wozu ist das 'L' beim long notwendig ? Java Basics - Anfänger-Themen 5
J Länge eines long wertes Java Basics - Anfänger-Themen 13
S Division von long! Java Basics - Anfänger-Themen 4
S Probleme beim Umwandeln von Long nach Int Java Basics - Anfänger-Themen 4
G long[] aus SQL-Abfrage Java Basics - Anfänger-Themen 3
N long geteilt durch long gleich null ? Java Basics - Anfänger-Themen 8
G int gleich long ? Java Basics - Anfänger-Themen 2
J A Long. way Java Basics - Anfänger-Themen 10
T Probleme mit long Java Basics - Anfänger-Themen 2
G NumberFormatException bei double und long Java Basics - Anfänger-Themen 11
G long zu kurz Java Basics - Anfänger-Themen 5
G long datum splitten in day etc Java Basics - Anfänger-Themen 23
G Zahlen >long verwenden Java Basics - Anfänger-Themen 7
G Problem beim rechenen mit long Java Basics - Anfänger-Themen 3
G long oder double Java Basics - Anfänger-Themen 15
M long in byte[] konvertieren und wieder zurück Java Basics - Anfänger-Themen 2
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
M Quersumme einer long zahl Java Basics - Anfänger-Themen 4
M long Datentyp effizient mit Daten füllen Java Basics - Anfänger-Themen 2
F Long umwandeln und auf 2 Dezimalen runden? Java Basics - Anfänger-Themen 14
G long-Zeitwert Java Basics - Anfänger-Themen 11
P "Line too long" bei der Generierung des jars. Java Basics - Anfänger-Themen 5
F Long zu 2 int und zurück Java Basics - Anfänger-Themen 3
P von long zu int umwandeln? Java Basics - Anfänger-Themen 3
T long in Vector speichern Java Basics - Anfänger-Themen 16
G "cannot convert from long to int" - problem Java Basics - Anfänger-Themen 9
G Vergleich zweier 'long'-Werte. Problem! Java Basics - Anfänger-Themen 6
P Wie mach ich aus Int ein Double oder Long ? Java Basics - Anfänger-Themen 6
N unsigned int to long Java Basics - Anfänger-Themen 5
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben