Java Modulo %, was wird in die variable gespeichert?
Hallo, ich habe mal eine kleine Verständnis frage...
Wenn ich in Java den Befehl: zahl = zahl % 2554; habe, was wird dann in die variable 2554 gespeichert?
Also 2554 / 10 ergibt ja 255,4. Wird die 4 einfach abgeschnitten und 255 wird in die variable gespeichert oder wir nur der Rest 4 in die Variable gespeichert?
In einem Programm haben wie den Befehl:
rest <- zahl: % 10;
zahl <- zahl / 10;
Diese Zeilen sollen dazu dienen eine Zahl in ihre einzelnen Ziffern zu zerlegen. Kann mir bitte jemand erklären wie das funktioniert? verstehe die Logik noch nicht ganz... :/
Und, wenn eine Zahl in ihre einzelnen Zahlen (z.B. 2554 in 2, 5, 5 und 4) zerlegt werden soll, ist dieser Befehl dann immer richtig? Bzw. nur bei Dezimalzahlen.
Wäre nett wenn mir jemand helfen könnte :D
Danke ;)
4 Antworten
Bei der modulo Rechnung wird der Rest übernommen.
Also bei 2345%10 wird 5 gespeichert.
Der Rest ist immer das was bei der ganzzahligen Division wegfallen würde. Also bei 4/2 bleibt 0, bei 5/2 bleibt 1, denn das Ergebnis ist 2
Wenn du so ein Programm hast:
for a=0 to 10
print a mod 3
next
kommt 0 1 2 0 1 2 0 1 2 0 als Ergebnis raus.
Und deine Vermutung ist richtig: 2554 mod 10=4
2554/10=255
255 mod 10=5
...
int zahl = 2554;
while(zahl > 9){
System.Out.println(zahl % 10); //gibt die letzte Stelle aus
zahl /= 10; //schneidet die letzte Stelle ab
}
Der Modulo-Operator % berechnet den Divisionsrest.
Es ist wie in der Grundschule, ohne Komma oder sonst was:
17 : 4 = 4 Rest 1
Bei 17%4 wird also 1 zurückgeliefert, das ist der Rest der ganzzahligen Division von 17 durch 4.
Wenn du Ziffern einer Zahl bestimmen möchtest, nimmst du modulo 10, das liefert dir nämlich (zumindest im Dezimalsystem) die Einerstelle:
31845 % 10 = 5
3184 % 10 = 4
318 % 10 = 8
...
Das kannst du weiter fortführen und die Zahl somit in ihre Ziffern zerlegen.
LG Willibergi
Hach da lobe ich mir die Programmiersprache Forth. Da kann man in jedem beliebigen Zahlensystem rechnen, und mit Modulo zusammen wird das eine tolle Waffe bei verschiedenen Angelegenheiten. Z.B. Umrechnung von Sekunden in Stunden, Minuten und Sekunden wird ein extrem kompakter Einzeiler. Versucht das mal so kompakt in Java. No chance.
:-D