Buch: Java lernen mit BlueJ Modulo-Operator

Hennes88

Mitglied
Hallo,

ich habe ein Problem. Undzwar in dem Buch "Java lernen mit BlueJ" das Kapitel 3.8.

In Übung 3.15 wird nach dem Modulo-Operator gefragt, man soll diesen erklären.

Ich weiß ja dass dieser den Rest ausgibt.

in dem Quelltext sieht er wie folgt aus:

Java:
public void erhoehen()
    {
        wert = (wert + 1) % limit;
    }

warum wird aber der Wert auf Null zurück gesetzt, sobald das Limit erreicht ist? (dieses gibt man zu Beginn ein).

Danke
 
... weil es in diesem Beispiel eben so ist?

Wenn das Limit erreicht wurde, steht da dann eben x modulo x und das ergibt Rest 0. Soweit klar? Was das jetzt in diesem Kontext für nen Sinn macht, kann dir wohl niemand anhand dieser einen Methode erklären. Und das Buch habe ich jetzt auch nicht zur Hand.
 
... weil es in diesem Beispiel eben so ist?

Wenn das Limit erreicht wurde, steht da dann eben x modulo x und das ergibt Rest 0. Soweit klar? Was das jetzt in diesem Kontext für nen Sinn macht, kann dir wohl niemand anhand dieser einen Methode erklären. Und das Buch habe ich jetzt auch nicht zur Hand.


das ist ne Uhrenanzeige, als Limit ist halt 23 eingestellt (für Stunden) und wenn dann eine Stunde erhöht wird soll es auf Null umspringen.
was gibt denn er Operator bei z.B. 15Stunden aus?
bei 15/ 23 kommt ja 0,65 raus. hat der Operator dann keine Ausgabe? oder warum erhöht sich solange die Stundenanzeige jeweils um 1?

Edit: Was mir noch grade aufgefallen ist: Wenn der Wert jetzt auf 22 Uhr steht, dann wird um 1 erhöht. Dann wäre es ja 23 / 23 und der Rest wäre null... dann muss er doch dann auf Null umspringen, oder?
 
Mod gibt den Rest der ganzzahligen Division zurück, so wie mans aus der Grundschule her kennt 😉
15 % 24 = 15
34 % 24 = 10
usw.
Bei deiner Uhr trifft immer der obige Fall zu da wert nie größer als limit werden kann.
 
jetzt sind mir noch zwei weitere Fragen aufgefallen die ich beantworten muss...
1. Welches sind die möglichen Werte des Ausdrucks (n % m) mit n und m als Variablen vom Typ integer?
2. Welches sind die möglichen Werte des Ausdrucks (n % 5) mit n als Variablen vom Typ integer?

was wären denn da die Lösungen...
 
is doch ganz einfach, teile einfach mal die Zahlen 5 bis 10 durch die Zahl 5 und schaue, was als Rest rauskommt... wenn du das verallgemeinerst, kommst du auch auf n % m
 
Fangen wir mit Frage 2. an, daraus ergibt sich Frage 1 automatisch. Welche Divisionsreste können denn bei einer Division durch 5 auftreten? Kann der Rest 0 sein? Sicher z.B. 5 % 5 == 0. Kann der Rest 4 sein? Auch das geht, z.B. 9 % 5 = 4. Und die Werte dazwischen? Und kann der Rest 5 werden, oder größer?

Jetzt ist aber % nicht ganz der mathematische Rest-Operator: Er behandelt negative Zahlen anders. Probiere das einfach mal aus:

Java:
class X {
   public static void main(String... args) {
      System.out.println(3 % 5);  
      System.out.println(-3 % 5);  
      System.out.println(3 % -5);  
      System.out.println(-3 % -5);  
   }
}

Da das natürlich im doofen BlueJ nicht erlaubt ist, geh einfach auf Ideone.com | Online IDE & Debugging Tool >> C/C++, Java, PHP, Python, Perl and 40+ compilers and intepreters , wähle Java aus und kopiere den Code...
 
Und ist es so schwer, das Verhalten für ein paar Werte mehr zu testen?

Java:
for(int i = -30; i <= 30; i+) {
   System.out.println(i +"%5=" + (i % 5));
}

Wenn du aus diesen Ergebnissen nichts ableiten kannst, weiß ich auch nicht mehr,,,
 
so, wenn ich das dann richtig verstehe wären die Lösungen wie folgt:
1. n = -(m-1) bis (m-1) und m kann ein beliebiger wert sein...
2. -4 bis 4
 

Zurück
Oben