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
Java:
importjava.util.Scanner;publicclassUmwandlung_Binär_Dezimal {publicstaticvoidmain(String[] args){Scanner input =newScanner(System.in);int teiler=100000;//teiler um an die jeweilige Stelle der binärzahl zu kommenint 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.
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.
Java:
publicvoidbinZuDez(String bin){long ergebnis =0;for(von 0 bis bin.length()Laufvariable: i){if(bin.CharAt(i) ist eine 0){continue;}elseif(bin.charAt(i) ist eine 1){
ergebnis plus quad(i);}else{break;}}privatelongquad(int male){return2 male quadriert;}
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?
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?
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.
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.