# Binärzahl prüfen und dezimalen Wert zurückgeben



## igorist88 (10. Mai 2012)

Guten Tag zusammen!

Zwei Fragen:
1. Wie kann ich prüfen, ob ein übergebener String eine Binärzahl (z.B. '1100') ist?
      - Denke mit einer Schleife .. aber wir genau ..
2. Wir gebe ich diese Binärzahl als dezimalen Wert zurück?

Danke!


----------



## SlaterB (10. Mai 2012)

mit Datenbanken hat das ja mal gar nichts zu tun, 
eh nach Hausaufgaben zu verschieben, wenn du keine Ansätze zur Diskussion mitbringst,

nur 'Schleife' zähle ich mal nicht, wie es danach weiter geht ist nicht klar?
ein Zeichen des Strings extrahieren und anschauen?

das zweite findet man in der API in der Integer-Klasse oder ist sonst ein gewisser Standard-Algorithmus,
den hier zu erklären wäre schon etwas langwidrig, ob allgemein mathematisch oder dann in Java-Code

falls du selber nicht bestimmtes wiederum diskutieren willst, 
ist es wohl vertretbar, gleich auf google für fertige Ergebnisse zu verweisen


----------



## 127.0.0.1 (10. Mai 2012)

igorist88 hat gesagt.:


> 1. Wie kann ich prüfen, ob ein übergebener String eine Binärzahl (z.B. '1100') ist?


*Mit RegEx*
da hatte ich letztens auch so meine Probleme 


```
String zahl = "1100";
if(zahl.matches("[0-1]+"))
{
System.out.println("Zahl ist in Ordnung");
}
```


----------



## nillehammer (10. Mai 2012)

> 1. Wie kann ich prüfen, ob ein übergebener String eine Binärzahl (z.B. '1100') ist?
> 2. Wir gebe ich diese Binärzahl als dezimalen Wert zurück?




```
final int binary = Integer.parseInt("101", 2);
```
 Wenn's ne Binärzahl ist, hast Du sie gleich als int (also dezimal). Wenn es keine ist, fliegt eine NumberFormatException, die Du abfangen kannst und den Benutzer zu einer Neueingabe auffordern. Das meinte SlaterB mit seinem Verweis auf die API von Integer.

[EDIT] Und bei der Regex von 127.0.0.1 fehlt ein +, damit es funktioniert. Also so: 
	
	
	
	





```
zahl.matches("[0-1]+")
```
 (Inzwischen berichtigt, Edit ist toll! )[/EDIT]


----------



## 127.0.0.1 (10. Mai 2012)

schon ergänzt 


```
+

Matches 1 or more of the preceeding token. This is a greedy match, and will match as many characters as possible before satisfying the next token.
```


----------

