Spiegeln der Ausgabenreihenfolge

Olfred737

Neues Mitglied
Hallo Programmierer!

Ich bin neu hier und dies ist mein erster Beitrag, also falls er an der falschen Stelle ist, mich einfach belehren!

Ich habe vor einigen Jahren einmal die Grundlagen von Java gelernt, jedoch vieles wieder vergessen. Aufgrund meines Studiums beginne ich wieder damit.
Ich versuche gerade eine Methode zu schreiben, die beliebige Werte (dezimal) in einen Binärcode umrechnet:

Ich gehe wie folgt vor:

Beispiel: Wert 10 = 1010

10/2 = 5R0 - 0
5/2 = 2R1 - 1
2/2 = 1R0 - 0
1/2 = 0R1 - 1

Man schreibt die Lösung ja von unten nach oben, also: 1010! Das Programm rechnet aber ja von oben nach unten.

Nun wollte ich die ganzen Ausgaben in Arrays speichern und in umgekehrter Reihenfolgen ausgeben. Anfangs lief das Programm, nur eben falsche Reihenfolge im Ergebnis, jetzt wo ich die Arrays versucht habe einzubauen, bringt es nur noch "00000" als Ergebnis!

Was hab ich falsch gemacht, kann mir jemand Tipps geben? (Wahrscheinlich geht es auch kompakter, aber mir geht es um den Fehler! Kein Syntaxfehler!) Ich wäre dankbar für jeden Tipp!

Hier der Code der Methode:


Java:
public static void calcBinaryString()  
	 {
		int beliebigerWert = 10;                                  // hier als Beispiel den Wert (10)
		int rest;
		int speicher[] = new int[8];                             // Array mit 8 Felder für 1 Byte- String
		int x = 0;
		int y = 0;
		int k = 0;
		do {
			x = x + 1;
			rest = beliebigerWert % 2;
			beliebigerWert = beliebigerWert / 2;
			if (rest == 1) {
				speicher[x] = 1;                              // speichere in Array [x]
			} else {
				speicher[x] = 0;
			}
			y = x;
		} while (beliebigerWert != 0);
		for (int p = y; y >= 0; y--) {                           //umgekehrt ausgeben
			speicher[p] = k;
			System.out.print(k);
		}
	 }

MfG Olfred737 ???:L
 
T

troll

Gast
do-while ist vielleicht nicht das "normalste" aber natürlich auch so völlig nutzbar ...
jedoch gleich die erste zeile ist schon mal mist denn arrays fangen bei index "0" an ... deine zeile 10 (die man auch direkt als "x++" schreiben kann) erhöt aber den index VOR der zuweisung ... womit dann im array alles um eine position verschoben wäre ...
nimm also zeile 10 raus und füge ganz unten "x++" ein ...

zusätzlich ist die for-schleife falsch ...

in java gilt für zuweisungen folgendes :

variable = wert

das hast du aber scheinbar vertauscht und setzt so nun jeden index des arrays "speicher[p]" auf "k=0" und gibst dann "k" aus ... was natürlich immer "0" ist und nach dem loop auch das array wieder so aussieht ...

und warum du nun mit "y" noch die länge haben willst versteh ich nicht da man binäre zahlen eigentlich immer in vollen 8er gruppen schreibt : 10(dez) = 00001010(bin) ...

alles in allem also eigentlich nur flüchtigkeits-fehler und in der logik etwas verhauen ... aber ansonsten ist es schon mal ein guter anfang
 

Olfred737

Neues Mitglied
Ok, vielen Dank...! Eigentlich logisch! Und ja, man schreibt Binärzahlen immer in 8er- Gruppen, aber soweit habe ich nicht gedacht, wollte ab der ersten 1... deshalb wird auch mitgezählt, wievielen Arrays einen Wert zugeweisen wurde.

Auf jeden Fall kann ich jetzt wieder "weiterbasteln"!

Hast mir echt geholfen!!! (auch wenns vielleicht einfach war)

:toll: :applaus:

MfG
 
T

troll

Gast
ich hätte es eh ganz anders gelost (nämlich als schlanken 1-zeiler) ... aber ich denke es war nicht sinn der aufgabe einfach entsprechende API-methoden zu nutzen ...
 

Ähnliche Java Themen


Oben