Probleme mit long Wert, der mit 0 beginnt

javas

Mitglied
Hallo zusammen
Ich habe ein Problem mit einem Long, der mit 0 beginnt.
Code:
long nummer = 012301230123;
System.out.println(nummer);
Die Ausgabe ist dann 1392848979.
Die Ausgabe sollte aber 012301230123 sein. nummer muss ein long bleiben!
Das Problem hatte ich schon mal, leider weiss ich die Lösung dafür nicht mehr.
Kann mir wer weiterhelfen?
Ebenfalls suche ich eine Möglichkeit, die Länge eines longs herauszufinden, ohne den Wrapper!
Besten Dank
lg javas
 
Zuletzt bearbeitet:
Hallo,

wo bekommst du diese Nummer denn her bzw. warum ist da diese '0' am Anfang ?

Was meinst du mit Länge ? Die Länge des Wertes in Bit oder die Anzahl an Zeichen ?
 
Mit der führenden 0 wird die Zahl als Oktahlzahl interpretiert. Korrekt wäre es so.
Java:
long nummer = 12301230123L;
System.out.println(nummer);

Und falls du das beabsichtigt hattest.

Java:
long nummer = 012301230123;
System.out.printf("%o%n", nummer);
 
Zuletzt bearbeitet:
Dieser long wird einem Konstruktor übergeben, eine 0 kann am Anfang sein. Es geht mir nicht um die Ausgabe(diente nur als Beispiel), ich muss die Zahl dann im Konstruktor weiterverwenden können. Es geht mir um die Anzahl Zeichen, die ich überprüfen möchte!
 
Moin,

Dieser long wird einem Konstruktor übergeben, eine 0 kann am Anfang sein. Es geht mir nicht um die Ausgabe(diente nur als Beispiel), ich muss die Zahl dann im Konstruktor weiterverwenden können. Es geht mir um die Anzahl Zeichen, die ich überprüfen möchte!

wie CPoly schon schrieb, kannst Du so einen solchen long-Wert nicht deklarieren ! ! !

Beispiel:
Java:
long lTest1 = 012301230123;     // Deklaration
// ergibt im Debugger:  lTest= 1392848979 [0x53053053]

long lTest1 = 12301230123; // FEHLER !!
// ==> Das Literal 12301230123 des Typs int liegt außerhalb des gültigen Bereichs

long lTest1 = 12301230123L;     // so geht es 
// ergibt im Debugger:  lTest1= 12301230123 [0x2dd35e02b]

Gruß
Klaus
 
Zuletzt bearbeitet:
Dann musst du es eben als String übergeben. Denn führende Nullen sind in jeder Zahlendarstellung optional und im Falle von Java (und anderen Sprachen bzw. Compilern) wird dadurch eine Oktalzahl eingeleitet.
Vielleicht kannst du ja nochmal versuchen uns genauer zu sagen, wo dein Problem liegt. Eventuell mit konkretem Beispielcode.
 
Vielen Dank für eure Hilfe! Ihr habt mir die Augen geöffnet, ich werde es nun wie folgt lösen:
Der Aufrufer entfernt die 0en am Anfang und ich setze sie dann später in dem String, den ich brauche, wieder hinzu!
 
Ihr habt mir die Augen geöffnet
was ich aber bezweifle.

Bei einem int (und vergleichbaren Typen) kannst du keine Nullen hinzufügen/entfernen.

Rein mathematisch gesehen ist 12=012=0012=...000000000000012

Du hast keinen Einfluss darauf, wie die Zahlen im Speicher gehalten werden.
Bei den puren Zahlentypen wird in keiner mir bekannten Sprache mitgespeichert, wieviel Nuller dabei waren.

Relevant ist das nur bei der Ein/Ausgabe (Tastatur, Bildschirm, Dateien, Drucker etc...)

Kurz gefasst:
Wenn du über die Tastatur ein int/long etc einliest, ergibt
1 2 -> 12
0 0 1 2 -> auch 12

Ob und wieviel Nuller der Benutzer mit dazugeschrieben hat, geht irgendwo im ReadLine unter und kommt nicht mit in dein int.
Ob bei der Ausgabe Nuller vorne dazugeschrieben werden, hat dann das Programm zu entscheiden

Wenn du die Nuller behalten möchtest, musst du einen String verwenden
 
@sheel
Ich brauche eine Zahl mit einer bestimmten Länge und fülle dann die restlichen Zeichen vorne mit 0en auf, sobald ich die Zahl in den String schreibe!
 
Zurück