# Char Wert in Int Wert parsen



## Guest (26. Aug 2008)

Geht so etwas eigentlich?

Ich will überprüfen, ob der übergebene CharWert zwischen 1 und 5 liegt. Werte wie 0 und größer 5 sollen abgewiesen werden. Die Char-Werte zwischen 1 und 5 stellen für Auswahloptionen innerhalb einer switch Anweisung dar. Diese will ich vorher auf ihre Richtigkeit prüfen. Um einen größer-kleiner Vergleich zu machen, muss ich doch bestimmt den char-wert in einen int-wert umwandeln oder? Folgende Methode habe ich bisher entwickeln können:




```
public static boolean checkChoiceOption(char selection, int mistake){
        
        boolean failure; 
        boolean resume = true;
        char test = 'a';
        
        
        for(int i = 0; i < selection.length(); i++){
			
			if (Character.isDigit(selection.charAt(i)))
										
				failure = false;
				
			else
			
				failure = true;
				
										
		}
        
        
        if( selection.length() != test.length() || failure || selection == '0' ){
         
                     
            ++mistake;
            Print.printMistake(mistake);
                                                   
            resume = false;
                            
         }
         
         else 
             
              resume = true;
     
         
         return resume;
         
     }
```


----------



## Guest (26. Aug 2008)

int intvalue = Integer.parseInt(charvalue);?


----------



## SlaterB (26. Aug 2008)

funktioniert leider oder zum Glück nur für Strings,
entweder also um die Ecke den char in String umwandeln

oder getrickst kürzer:
int intvalue = charvalue - '0';


------
<'0' + > '4'

geht allerdings auch für chars, auch switch


----------



## Guest (26. Aug 2008)

Das verstehe ich nicht ganz, kannst Du das vielleicht etwas ausführlicher vielleicht mit char- und zahlenbeispielen beschreiben slater? Danke dir.


----------



## SlaterB (26. Aug 2008)

kannst du ausführlicher beschreiben, was du daran nicht verstehst?

die eine Codezeile
int intvalue = charvalue - '0';
kannst du doch selber mit verschiedenen charvalue-Werten ausprobieren


----------



## ARadauer (26. Aug 2008)

das char '1' ist nicht 1 wenn du es auf int castest, sondern 49

System.out.println((int)'1');


http://www.torsten-horn.de/techdocs/ascii.htm

falls das das problem ist


----------



## Guest (26. Aug 2008)

Gibt es eigentlich auch die Möglichkeit, einen String -Wert in einen Int-Wert zu parsen? Also wenn ich eine switch Anweisung mit einem Int-Wert statt mit einem char-wert abarbeiten möchte und verhindern will, dass versehentlich ein String oder char Wert übergeben wird?


----------



## ARadauer (26. Aug 2008)

das hatten wir schon


```
int intvalue = Integer.parseInt(charvalue);
```

falls du probleme damit hast, welche klassen, welche mehtoden anbieten und welche parameter du übergeben kannst, kannst du hier nachsehen:

http://java.sun.com/javase/6/docs/api/


----------



## SchonWiederFred (27. Aug 2008)

Anonymous hat gesagt.:
			
		

> Ich will überprüfen, ob der übergebene CharWert zwischen 1 und 5 liegt.




```
if (selection >= '1' && selection <= '5')
    // alles in Ordnung
else
    // fehlerhafte Eingabe
```
chars sind bereits "ganz normale" Werte zwischen 0 und 65535, die man wie ints miteinander vergleichen kann.

Java bietet besondere Literale (die mit den einfachen Hochkommata, also sowas wie 'a' oder 'z'), damit man nicht immer in der Unicode-Tabelle nachlesen muss, dass man ein a normalerweise als 97 oder eine 0 als 48 kodiert. Und die Ein- und Ausgabeoperationen sind derart programmiert, dass sie ebenfalls diese Interpretation leisten.

Und für das switch brauchst Du das nicht extra vorher abzufangen, ein default-case reicht auch:

```
switch (selection)
{
    case '1': // ...
    break;

    case '2': // ...
    break;

    case '3': // ...
    break;

    case '4': // ...
    break;

    case '5': // ...
    break;

    default: throw new IllegalArgumentException("Fehlerhafte Eingabe");
}
```


----------



## Guest (27. Aug 2008)

Einmal muss ich noch eine Frage loswerden. Habe ich eigentlich die Möglichkeit, einen Stringwert in einem Charwert zu parsen?


----------



## SlaterB (27. Aug 2008)

string.charAt(0)


----------

