# führende Nullen erstellen



## Guest (19. Jun 2008)

Hallo,

hab den integer wert 8 und möchte diesen in den String "0008" umwandeln.

habs schon mit

```
import java.text.*;

  String test;
  test = print(8,"#0000");
```

versucht, aber er kennt nicht mal die Methode print!

Hilfe


----------



## Eminent (19. Jun 2008)

Von welchem Objekt soll print hier auch aufgerufen werden?

Eine allgemeine Methode print gibt es in Java natürlich nicht.


----------



## xysawq (19. Jun 2008)

Die aller billigste und schlechteste variante wäre diese hier:

```
int temp = 0;

if(temp<10)
{
	System.out.println("000" + temp);
}
else if(temp>=10 && temp<100)
{
	System.out.println("00" + temp);
}
else if(temp>=100 && temp<1000)
{
	System.out.println("0" + temp);
}
else if(temp>=1000)
{
	System.out.println(temp);
}
```

versuchs erstmal so, das geht auf jeden fall, ist übersichtlich und benutzt nur elementares


----------



## Marco13 (19. Jun 2008)

Warum auch immer man die billigste und schlechteste Lösung vorschlägt. Das geht mit http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object...), oder, wenn es sein muss, mit sowas wie

```
private static String pad(String s, int length)
{
    while (s.length() < length) s = "0"+s;
    return s;
}
```


----------



## Krondor (19. Jun 2008)

Trivial Methode mit handling von negativen Zahlen :


```
public class FormatWithZeros {
  public static void main(String[] args) {
    System.out.println(formatInt(234, 10));
  }
  public static String formatInt(int value, int positionCount) {
    String temp = "" + value;
		  
    int toAddCount = positionCount - temp.length();

    if(toAddCount > 0) {
      StringBuffer sb = new StringBuffer();
      for(int i=0;i<toAddCount;i++) {
        sb.append("0");
      }
      temp = (sb.append(temp)).toString();
			
      if(temp.contains("-")) {
        System.out.println(temp);
        int index = temp.indexOf("-");
        System.out.println("" + index);
        temp = "-" + temp.substring(0, index) + temp.substring(index+1);
      }
    }
    return temp;
  }
}
```


Da waren wohl ein paar Leute schon vor mir


----------



## xysawq (19. Jun 2008)

Um zu der Variante von Marco13 noch was zu sagen:

Die Länge deiner Zahl bekommst du z.B. so:

```
int zahl = 0;
int length = String.valueOf(zahl).length();
```

Außer Marco  hat wieder nen besseren Vorschlag...


----------



## Marco13 (19. Jun 2008)

Solange nicht definiert ist, was "die Länge einer Zahl" ist, nein :wink:
int a = -1; // Länge 2?
double b = 1e4; // Länge 5?
....

Die Frage war eben unpräzise gestellt. Man hätte sie auch beantworten können mit
int a = 8;
String b = "000"+a;
 :roll: ... meistens kann man eben nur die Kristallkugel befragen, WAS die Leutz denn eigentlich genau wollen....


----------



## xysawq (19. Jun 2008)

OK, ich formuliere es um:

"Die Anzahl der Ziffern deiner positiven, natürlichen Zahl."

und ich habs jetzt mal zusammengefügt:

```
public void methode()
{
	int zahl = 666;
	
	System.out.println(addZeros(zahl, 8));
}

//du übergibst deine Zahl und die Anzahl der auzugebenden Ziffern (Nullen und Zahl)
private static String addZeros(int number, int length)
{
	int digits = String.valueOf(number).length();
	length = length - digits;
	String string = "";
	
	while (string.length() < length)
		string = "0"+string;

	string = string + number;

	return string;
}
```


----------



## Marco13 (19. Jun 2008)

Jetzt aber:

```
private static String addZeros(int number, int length) 
{
    String s = String.valueOf(number);
    while (s.length() < length) s = "0"+s;
    return s;
}
```
( :bae:  :wink: )


----------



## xysawq (19. Jun 2008)

ach mann... ich merk schon ich denke immer um 3 ecken zu viel ^^


----------



## quiclic (6. Jan 2012)

```
s = "00000000"+s; s = s.substring(s.length() - 8);
// Wenn man 8 Stellen will
```


----------



## Schandro (6. Jan 2012)

```
System.out.println(new DecimalFormat("0000").format(8));
```
Ich finds großartig wie fast alle vorschlagen das lieber per Hand zu bauen


----------



## Cola_Colin (6. Jan 2012)

Und das auch noch mit 3,5 Jahren verspätung...


----------



## Schandro (6. Jan 2012)

Cola_Colin hat gesagt.:


> Und das auch noch mit 3,5 Jahren verspätung...


Hey, ist nicht meine Schuld wenn quiclic den Thread wieder nach ganz oben hohlt, da guck ich natürlich nicht aufs Datum 
Wobei es DecimalFormat schon länger gibt


----------



## DerFeivel (6. Jan 2012)

```
String padWithLeadingZerosToWidthOf4 = String.format("%04d",8);
```

Gabs auch schon zu 5er Zeiten


----------



## Schandro (6. Jan 2012)

DerFeivel hat gesagt.:


> ```
> String padWithLeadingZerosToWidthOf4 = String.format("%04d",8);
> ```
> 
> Gabs auch schon zu 5er Zeiten


<troll>
Was, bescheuerte Variablennamen? :bae:
</troll>


----------



## DerFeivel (6. Jan 2012)

<Mitroll>

So manch einer bekam bei gleichzeitiger Verwendung von SaxBuildern und Stringbuffern schon Probleme 

</Mittroll>


----------

