Hochzaehlen mit vorangehenden 0en

scaary

Bekanntes Mitglied
Hallo.

Ich wuerde gerne mit einer Vorschleife hochzaehlen, und dabei die vorangehenden 0en beibehalten.

Bsp:

Java:
for (int i = 00000; i < 10001; ++i ) {
		}
Nur macht java die 0en automatisch weg, weswegen ich anstatt
00001, 00002, 00003...
nur
1,2,3...

bekomme.

Daher meine Frage:
Gibt es eine moeglichkeit die 0en bei zu behalten?

Danke!

LG Scaary


Ps:
Ich brauche das ganze um eine LinkedList<Double> zu durchlaufen und zu schauen, ob eine Nummer fehlrt (also bsp:
00005,00006,00007,00010,00011,00012...
 
G

Gonzo17

Gast
Ein int hat keine führenden Nullen, das musst du bei deiner Ausgabe selbst "einbauen". Beispielsweise so:

Java:
System.out.printf("%010.4f", 100.00);

Damit werden 4 Stellen hinter dem Komma und mindestens 10 Stellen insgesamt angezeigt. Das macht bei diesem Beispiel die Ausgabe
Code:
00100,0000
 

scaary

Bekanntes Mitglied
Den gibts noch nich ;)

Also das Ganze im Modell:

Java:
LinkedList<Double> list = new LinkedList();
list.add(0000001);
list.add(0000002);
list.add(0000003);
list.add(0000007);
list.add(0000008);
list.add(0000009);
list.add(0000010);

So SOLL es mal auschauen.
Wobei ich grade sehe, dass eclipse mir dann nen Fehler wirft :/
Wie realisiere ich das ganze denn effektiv?

Es geht mir eigentlich nur darum fuer ein Programm aufzuschreiben, welche Nummern bereits vergeben sind und welche nicht (und eben vergeben Nummern wieder freigeben zu koennen).
 

Schumi

Bekanntes Mitglied
Die Doubles haben auch keine führenden nullen, oder ist das ein eigener Datentyp? Den könntest Du dann auch in der for Schleife verwenden, allerdings bräuchtest Du dann noch Methoden die die Operatoren ersetzen.
Aber ich glaube eRaaas Tip ist erstmal der Beste.
 
G

Gonzo17

Gast
Ich verstehe nicht warum du da führende Nullen brauchst. Ob dein System mit 0001 oder 1 rechnet kann dir doch wurschd sein? Wenn es nur um Nummern geht, dann sollte das doch auch ohne führende Nullen klappen.

@ Schumi
Nee double ermöglicht dir Nachkommastellen zu berechnen und anzuzeigen, aber keine führenden Nullen.
 

scaary

Bekanntes Mitglied
Noja, ich wollte die fuehrenden Nullen haben, da die Nummer ein Dateinamenteil ist, und der muss (ist so vorgegeben) eben mit einer 8 Stelligen Zahl anfangen (ohne Komma). :(
 
Zuletzt bearbeitet:
G

Gast2

Gast
Dir ist aber bewusst das Dateinamen generell aus String besteht ... musst Dir wohl etwas basteln in der Richtung von Gonzo17
 

scaary

Bekanntes Mitglied
Dessen bin ich mir bewusst, waer aber eben schoener, wenn ichs einfach hochzaehlen koennte...:(

Aber na gut, dann werd ich das wohl machen muessen (wie UMSTAENDLICH, verdammt).
Trotzdem Danke :)
 

Wortraum

Bekanntes Mitglied
Noja, ich wollte die fuehrenden Nullen haben, da die Nummer ein Dateinamenteil ist, und der muss (ist so vorgegeben) eben mit einer 8 Stelligen Zahl anfangen (ohne Komma). :(
Dann verwende die Klasse DecimalFormat; umständlich ist das überhaupt nicht.
Java:
DecimalFormat df = new DecimalFormat("00000000");
System.out.println(df.format(5)); /* -> 00000005 */
 
Zuletzt bearbeitet:
G

Gonzo17

Gast
Ist doch eigentlich auch garnicht so schwer. Du machst aus deinem int einen String, überprüfst die Anzahl der Zeichen und fügst so lange vorne 0er an, bis die Anzahl der Zeichen 8 ist.

Java:
public static void main(String[] args) {
		int i = 100;
		StringBuffer s = new StringBuffer(String.valueOf(i));
		while (s.length() < 8) {
			s.insert(0, 0);
		}
		System.out.println(s.toString());
	}

Das hier macht aus einer 100 eine 00000100.

Edit: Und die Lösung meines Vorredners ist sogar noch komfortabler. :)
 

Wortraum

Bekanntes Mitglied
Edit: Und die Lösung meines Vorredners ist sogar noch komfortabler. :)
Und schneller, und mächtiger, denn mit DecimalFormat kann man noch einiges mehr machen. Die sollte man sich auf jeden Fall merken, und ein Blick in die Dokumentation kann nicht schaden. Aber so ist es doch oft: da bastelt man und macht und tut, bis jemand daherkommt und sagt: „Warum hast Du nicht die Klasse XY genommen, die kann das doch schon alles.“ :)
 

ARadauer

Top Contributor
Dessen bin ich mir bewusst, waer aber eben schoener, wenn ichs einfach hochzaehlen koennte...:(

Aber na gut, dann werd ich das wohl machen muessen (wie UMSTAENDLICH, verdammt).
Trotzdem Danke :)

double, int, float sind zahlen... es gibt keine 00 zahl! es gibt kein 0000 das ist alles 0. es gibt kein 0006... das ist 6. verwalte einfach int werte und wenn du dann deinen namen generierst machst dir ja einen string draus und dann benutzt DecimalFormat um aus deiner 6 ein "000006" String zu machen. einfach, flexibel und logisch...
 

scaary

Bekanntes Mitglied
Oh, die DecimalFormat Klasse find ich ja Spitze :)

Die werd ich benutzen, Danke!

Also nochmal danke euch allen, wieder viel gelernt heute :)

LG Scaary :)
 

Oben