int Wert mit führender 0?

  • Themenstarter Themenstarter Götze
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Götze

Gast
Hallo,

hab ne kurze Frage: Ist es irgendwie möglich Zahlenwerte wie 0123 als int zu speichern?
Also zb.
Code:
int x = 0123;
Oder ist das unmöglich?
 
..thx schonmal! Also würde mir als einzigste Lösung bleiben, das Ganze als String zu speichern?
 
...Also:
Meine Aufgabe ist, ein Array mit Länge 1000000 zu erstellen. In jedem Feld soll dann eine zufällig generierte Zahl zwischen (0)1670 - 99999 stehen (soll also quasi ein Zufalls-Postleitzahl Array sein).
Das ganze Array soll dann mit Distribution bzw. Radix Sort sortiert werden. Soweit kein Thema...

Code:
public int getZiffer(int daten, int stelle){
        String temp = Integer.toString(daten);
        return  Integer.parseInt (""+temp.charAt(stelle));
     }

     
      public void distributionSort(int[] daten, int keyLaenge){
       int d = 10;
       int[] temp = new int[daten.length];
       for (int runde = 0; runde < keyLaenge; runde++){
           int[] fachPointer = new int[d];
           //   Kopiere daten[] nach temp[] und bestimme gleichzeitig die Fachgrößen
           for (int i=0; i<daten.length; i++){
               temp[i] = daten[i];
               fachPointer[getZiffer(daten[i], runde)]++;
            }
            //  Setze fachPointer[i] an die erste Position in Fach i
            for (int i=d-1; i>0; i--) fachPointer[i]=fachPointer[i-1];
            fachPointer[0]=0;
            for (int i=1; i<d; i++) fachPointer[i] += fachPointer[i-1];
            //  Sortiere die Daten in die Fächer
            int wert, fach;
            for (int i=0; i<temp.length; i++){
                wert = temp[i];                     //  einzuordneneder Wert
                fach = getZiffer(wert,runde);       //  richtiges Fach
                daten[fachPointer[fach]++] = wert;  //  einordnen, inkrementieren
            }
        } //    for runde =...
    } // end radixSort[]

Die Methode getZiffer dient dazu mir eine bestimmt Ziffer aus einem int-wert zu liefern. Das Problem besteht jetzt darin,
dass bei keyLaenge = 4 (die nötig ist um 5stellige PLZ's zu sortieren) ich logischerweise bei nur 4stelligen Werten ne StringIndexOutBoundsException bekomme. Deswegen auch die Frage mit int x = 01234! Hoffe man kanns raffen...
 
Arbeite einfach weiter mit ints und nimm für die Ausgabe dann NumberFormat bzw. DecimalFormat und lass darüber die führende Null anhängen.
 
Schreib doch deine getZiffer Methode anders:

Code:
public static int getZiffer(int daten, int stelle){
  int t = (int)Math.pow( 10, stelle );
  return (daten/t)%(t*10)%10;
}

public static void main(String[] args){
  System.out.println( getZiffer( 102, 0 )); // 2
  System.out.println( getZiffer( 102, 1 )); // 0
  System.out.println( getZiffer( 102, 2 )); // 1
  System.out.println( getZiffer( 102, 3 )); // 0
  System.out.println( getZiffer( 142, 1 )); // 4
  System.out.println( getZiffer( 132, 1 )); // 3
  System.out.println( getZiffer( 00102, 5 )); // 0
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben