# Umwandlung Binär in  Dezimal (ohne array etc.)



## spitzboob (27. Okt 2014)

Hallo Leute,

Ich hab an der Uni gerade die Aufgabe ein Programm zu  schreiben das eine Binärzahl einliest und die richtige Dezimalzahl dazu ausgibt. Davon soll ich jeweils  Versionen mit while-, do while- und for- Schleife schreiben. (eine funktionierende Version würde mir schonmal reichen ). 
Ich bin schon soweit gekommen das es mir die richtigen Ergebnisse ausrechnet, aber bekomm die einzelnen Ergebnisse nicht aus der schleife heraus, damit ich Sie einzeln addieren kann...
Bin mittlerweile echt am verzweifeln :/
Sonst finde ich nur Lösungen im Netz die schon mit arrays und umwandeln von integer in stringer rechnen und soweit sind wir in der Vorlesung noch nicht



```
import java.util.Scanner;
public class Umwandlung_Binär_Dezimal {

	public static void main(String[] args){
		Scanner input = new Scanner(System.in);
		
		int teiler=100000; //teiler um an die jeweilige Stelle der binärzahl zu kommen
		int exp=5;
		int binär;
		int dezimal;
	
		
		
		  System.out.println("Integer eingeben (Binär): ");
		  binär= input.nextInt();
		  
		  
		  while(teiler >1 && exp >0){  //schleife um teiler und exponent zu verkleinern
			  teiler = teiler / 10;	
			  exp --;
			 
				if(binär / teiler % 10 == 1 ){// ob an jeweiliger stelle 1 oder keine 1
					dezimal = (int) Math.pow(2, exp);
				}else{
						dezimal =0;
					}
				

				System.out.println(dezimal);
		
}
		}
	
		
	}
```

Ich hoffe mein Ansatz ist nicht komplett falsch. 
Würde mich freuen wenn mir jemand weiterhelfen kann.
Vielen Dank im Voraus.


----------



## Gucky (27. Okt 2014)

Das der Professor etwas noch nicht vorgelesen hat schließt aus, es zu benutzen?

Was ist denn ein stringer?  

Was meinst du mit einzelnen Ergebnissen aus der Schleife herausbekommen?

Wenn du das richtige Ergebnis bekommst, dann dürfte dein Ansatz allzu falsch nicht sein.

In Pseudocode, wie ich das machen würde. Fehler sind nicht ausgeschlossen aber ich wage zu behaupten, dass sie unwahrscheinlich sind.


```
public void binZuDez(String bin){
  long ergebnis = 0;
  for (von 0 bis bin.length() Laufvariable: i){
    if (bin.CharAt(i) ist eine 0){
      continue;
    } else if (bin.charAt(i) ist eine 1){
      ergebnis plus quad(i);
    } else {
      break;
    }
}

private long quad(int male){
  return 2 male quadriert;
}
```


----------



## spitzboob (27. Okt 2014)

Danke für die schnell Antwort 

dein Code ist mit Sicherheit um Welten besser als meiner, aber ich verstehen hin halt nicht wirklich^^
Und sollte doch auch auf meine weise funktionieren

damit meine ich, wenn ich jetzt mein code ausführe (funktioniert gerade nur wenn die binärezahl fünfstellig ist) bekomme ich für "System.out.println(dezimal)" die einzelnen richtigen Ergebnisse untereinander ausgedruckt...
kann ich diese ausgaben noch zusammenrechnen?


----------



## Misty Jane (27. Okt 2014)

spitzboob hat gesagt.:


> damit meine ich, wenn ich jetzt mein code ausführe (funktioniert gerade nur wenn die binärezahl fünfstellig ist) bekomme ich für "System.out.println(dezimal)" die einzelnen richtigen Ergebnisse untereinander ausgedruckt...
> kann ich diese ausgaben noch zusammenrechnen?



Möchtest Du die Zahlen zusammenrechnen oder nebeneinander ausdrucken?

System.out.print(dezimal)  druckt nebeneinander
System.out.println(dezimal) druckt untereinander


----------



## spitzboob (27. Okt 2014)

ich möchte sie zusammenrechen. Also wenn ich z.B. als Dualzahl :10101 eingebe druck es mir 16 , 0, 4, 0,1 aus.

was ja die Ergebnisse pro Durchlauf der Schleife sind. Ich möchte die Zahlen noch zusammenrechen(also zu 21) aber weiß nicht wie oder ob es überhaupt funktioniert.


----------



## Gucky (27. Okt 2014)

Du kannst mit zwei Variablen arbeiten. Die Eine steht für das Ergebnis des einen Durchlaufs und die Andere für das Endergebnis. Die Erste wird immer auf die Zweite drauf gerechnet aber die Zweite wird erst nach der Schleife ausgegeben.


----------



## spitzboob (27. Okt 2014)

Oh Mann so simpel ) aber ich bin einfach nicht drauf gekommen... 
Naja jetzt funktioniert es 
Vielen Dank


----------

