# Char als Int speichern



## wolfgang12 (13. Aug 2012)

Moin,,

ich möchte einen Char-Wert als Integer speichern, aber nicht den ASCII-Code (also nicht 'A' = 65 etc.). Folgendes klappt auch:


```
int temp = Integer.parseInt(Character.toString((eingabe.charAt(eingabe.length()-1))));
```

Geht das aber nicht etwas einfacher?

Viele Grüße,
Wolfi


----------



## Michael... (13. Aug 2012)

Liefert 
	
	
	
	





```
eingabe.charAt(eingabe.length())
```
 nicht eine OutOfBoundsException?
So ganz hab ich's nicht verstanden. Du hast einen String der Zahlen enthält. Einzele Zahlen daraus willst Du als int haben?

```
String text = "Hallo123";
int = Integer.parseInt(text.substring(6, 7));
```


----------



## JCODA (13. Aug 2012)

```
int zahl = temp-'0';
```

vorher ggf. noch mit 
	
	
	
	





```
Character.isDigit(temp)
```
 überprüfen.


----------



## wolfgang12 (13. Aug 2012)

Michael... hat gesagt.:


> Liefert
> 
> 
> 
> ...



Ich laufe in der Schleife die eingegebene Zahl (z.B. 1524) durch und extrahiere dann jede Ziffer einzeln (also 1,5,2 und 4 ) als integer.


----------



## KingOfExceptions (13. Aug 2012)

Du könnstest eine Methode erstellen, die genau das macht. Dann musst du nur diese Methode aufrufen. Das spart eben diese lange Codezeile.

Das sähe dann ungefähr so aus:


```
public int parseToInt(char eingabe)
{
     return Integer.parseInt(Character.toString((eingabe.charAt(eingabe.length()-1))));
}
```

Dann brauchst du das nur mit 
	
	
	
	





```
int temp= parseToInt(eingabe);
```
 aufrufen und schon hast du ein wenig an Übersichtlichkeit dazugewonnen und an Code gespart.


----------



## Michael... (13. Aug 2012)

wolfgang12 hat gesagt.:


> Ich laufe in der Schleife die eingegebene Zahl (z.B. 1524) durch und extrahiere dann jede Ziffer einzeln (also 1,5,2 und 4 ) als integer.


Wenn der ganze String eine Zahl ist, kann man da nicht den String als ganzes in eine Zahl wandeln und die einzelnen Ziffern in einer Schleife extrahieren?


----------



## wolfgang12 (13. Aug 2012)

KingOfExceptions hat gesagt.:


> Du könnstest eine Methode erstellen, die genau das macht. Dann musst du nur diese Methode aufrufen. Das spart eben diese lange Codezeile.
> 
> Das sähe dann ungefähr so aus:
> 
> ...



Ja klar, aber diese lange Zeile kann ich nicht noch weiter vereinfachen? Darum gings mir ja eigentlich


----------



## Mujahiddin (13. Aug 2012)

Ich denke, das ist viel zu umständlich.
Von char zu String zu wandeln ist zwar ziemlich einfach aber von String zu Integer zu wandeln ist ein leicht komplizierterer Prozess. Besser wäre folgendes:

```
if(Character.isDigit(c))
    zahl = c - '0';
else
    //Fehlermeldung
```


----------



## Michael... (13. Aug 2012)

Mujahiddin hat gesagt.:


> Ich denke, das ist viel zu umständlich.
> Von char zu String zu wandeln ist zwar ziemlich einfach aber von String zu Integer zu wandeln ist ein leicht komplizierterer Prozess. Besser wäre folgendes:
> 
> ```
> ...


0 ist ASCII 48, das war ja auch der Vorschlag von JCODA


----------



## Mujahiddin (13. Aug 2012)

Ja war grad zu faul nachzugucken.. Ich denke es ist klar, was ich meine... War mir nicht sicher, ob JCODA das gleiche gemeint hat... Ging aber in die Richtung, ja.

E: ah jetzt seh ich sein Codebeispiel auch.. Sorry!


----------



## hüteüberhüte (13. Aug 2012)

```
String str = "asdfhjklasdh234890234asdklfhasdkl";
        List<Integer> l = new LinkedList<Integer>();
        for (char c : str.toCharArray()) {
            if (Character.isDigit(c)) {
                l.add(Character.getNumericValue(c));
            }
        }

        System.out.println(l);
```

Character (Java Platform SE 6)

Wahlweise 
	
	
	
	





```
if (Character.isDigit(c)) {
```
 weggelassen


----------

