tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
8
ZUGRIFFE
629
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    javas javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    Hallo zusammen
    Ich habe ein Problem mit einem Long, der mit 0 beginnt.
    Code :
    1
    2
    
    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
    Geändert von javas (12.10.10 um 10:21 Uhr)
     

  2. #2
    Tikonteroga Tikonteroga ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Beiträge
    153
    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 ?
     

  3. #3
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Mit der führenden 0 wird die Zahl als Oktahlzahl interpretiert. Korrekt wäre es so.
    Code java:
    1
    2
    
    long nummer = 12301230123L;
    System.out.println(nummer);

    Und falls du das beabsichtigt hattest.

    Code java:
    1
    2
    
    long nummer = 012301230123;
    System.out.printf("%o%n", nummer);
    Geändert von CPoly (12.10.10 um 10:44 Uhr)
     

  4. #4
    javas javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    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!
     

  5. #5
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von javas Beitrag anzeigen
    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:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    
    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
    Geändert von vfl_freak (12.10.10 um 11:15 Uhr) Grund: Tippfehler :-(
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  6. #6
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    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.
     

  7. #7
    javas javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    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!
     

  8. #8
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Zitat Zitat von javas Beitrag anzeigen
    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
     

  9. #9
    javas javas ist offline Mitglied
    Registriert seit
    Feb 2010
    Beiträge
    21
    @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!
     

Ähnliche Themen

  1. Long Wert aus Record als String ausgeben
    Von mapntrack im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 08.04.09, 16:31
  2. Probleme mit dem Wert 0
    Von phap69 im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 21.01.08, 23:13
  3. Die Plage beginnt
    Von Senfdose im Forum Bildbearbeitung & Illustration
    Antworten: 4
    Letzter Beitrag: 27.08.05, 10:23
  4. Wo beginnt VB zu laufen / arbeiten?
    Von nullpunkt im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 15.07.05, 11:47
  5. xsl when; ein Name beginnt mit ungültigem Zeichen
    Von Lahr01 im Forum XML Technologien
    Antworten: 1
    Letzter Beitrag: 08.10.04, 12:08

Stichworte