---
title: 'Von char in int: vom Zeichen zur Zahl'
url: 'https://tutego.de/blog/javainsel/2016/11/von-char-in-int-vom-zeichen-zur-zahl'
markdown: 'https://tutego.de/blog/javainsel/2016/11/von-char-in-int-vom-zeichen-zur-zahl.md'
date: '2016-11-03'
description: 'Wenn Zeichen aus Benutzereingaben stammen stellt sich die Anforderung, diese in die Zahl zu konvertieren. Aus der Ziffer ‚5‘ soll das der numerische Wert 5 folgen. Nach alter Hacker-Tradition war die Lösung immer die, eine ‚0‘ abzuziehen. Die ASCII-Null ‚0‘ hat den char-Wert 48, ‚1‘ dann 49, bis ‚9…'
taxonomy:
  category:
    - Allgemein
    - Insel
---

# Von char in int: vom Zeichen zur Zahl

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://tutego.de/blog/javainsel/)

## Von char in int: vom Zeichen zur Zahl

03.11.2016 · [Christian Ullenboom](https://tutego.de/blog/javainsel/author/admin/)

Wenn Zeichen aus Benutzereingaben stammen stellt sich die Anforderung, diese in die Zahl zu konvertieren. Aus der Ziffer ‚5‘ soll das der numerische Wert 5 folgen. Nach alter Hacker-Tradition war die Lösung immer die, eine ‚0‘ abzuziehen. Die ASCII-Null ‚0‘ hat den char-Wert 48, ‚1‘ dann 49, bis ‚9‘ schließlich 57 erreicht. So ist logischerweise ‚5‘ – ‚0‘ = 53 – 48 = 5. Die Lösung hat einen Nachteil, dass sie nur für ASCII-Ziffern funktioniert.

Eine ordentliche Java-Lösung besteht zum Beispiel darin, ein char in ein `String` zu konvertieren und diesen über eine `Integer`-Methode zu konvertieren, etwa so:

```java
char c = '5';

int  i = Integer.parseInt( String.valueOf(c) );  // 5
```

Die `parseInt(…)`-Methode ist voll internationalisiert und konvertiert ebenso Dezimalzahlen aus anderen Schriftsystemen, etwa Hindi/Sanskrit:

```java
System.out.println( Integer.parseInt( "५" ) );   // 5
```

Das funktioniert, ist jedoch für einzelne Zeichen nicht besonders effizient in Schleifen. Es gibt zwei andere Möglichkeiten, mit statischen Methoden aus der Klasse Character.

#### `getNumericValue(…)`-Methode

Die Character-Methode `getNumericValue(char)` liefert den numerischen Wert einer Ziffer zurück; natürlich arbeitet die Methode wieder internationalisiert:

```java
int i = Character.getNumericValue( '5' );

System.out.println( i );                         // 5

System.out.println( Integer.parseInt( "५" ) );   // 5
```

Die Methode ist viel leistungsfähiger, denn sie kennt den tatsächlichen „Wert“ aller Unicode-Zeichen. Zum Beispiel auch der römischen Ziffern Ⅰ, Ⅱ, Ⅲ, Ⅳ, Ⅴ, Ⅵ, Ⅶ, Ⅷ, Ⅸ, Ⅹ, Ⅺ, Ⅻ, Ⅼ, Ⅽ, Ⅾ, Ⅿ, …, die im Unicode-Alphabet ab ‚\\u2160‘ stehen:

```java
System.out.println( Character.getNumericValue( '\u216f' ) ); // 1000
```

#### XXXdigit(…)-Methoden

Die Character-Klasse besitzt ebenso eine Umwandlungsmethode für Ziffern bezüglich einer beliebigen Basis, das auch in die andere Richtung.

final class `java.lang.Character`

```
implements Serializable, Comparable<Character>
```

- `staticintdigit(charch,intradix)`Liefert den numerischen Wert, den das Zeichen ch unter der Basis radix Beispielsweise ist Character.digit(‚f‘, 16) gleich 15. Erlaubt ist jedes Zahlensystem mit einer Basis zwischen Character.MIN\_RADIX (2) und Character.MAX\_RADIX (36). Ist keine Umwandlung möglich, beträgt der Rückgabewert –1.
- `staticcharforDigit(intdigit,intradix)`Konvertiert einen numerischen Wert in ein Zeichen. Beispielsweise ist forDigit(6, 8) gleich „6“ und Character.forDigit(12, 16) ist „c“.

Beispiel: Konvertiere eine Zeichenkette mit Ziffern in eine Ganzzahl.

```java
 char[] chars = { '3', '4', '0' };
 int result = 0;
 for ( char c : chars ) {
   result = result * 10 + Character.digit( c, 10 );
   System.out.println( result );
 }
```

Die Ausgabe ist 3, 34 und 340.

Kategorien: [Allgemein](https://tutego.de/blog/javainsel/category/allgemein/), [Insel](https://tutego.de/blog/javainsel/category/insel/)

[← Alle Beiträge](https://tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Statischer Import](https://tutego.de/blog/javainsel/2016/11/statischer-import.md)
- Next: [Nicht-Java-News: HTML 5.1 verabschiedet](https://tutego.de/blog/javainsel/2016/11/nicht-java-news-html-5-1-verabschiedet.md)
