Simple Java Modulo Aufgabe wer kann mir helfen?
Ich weiß auch blöder weise echt gar nicht wie ich die for schleife machen soll -.....
3 Antworten
- aus der for-Schleife würde ich while(x>0) machen, sieht erstens besser aus, zweitens verpasst du bei >10 die letzte (höchstwertigste) Ziffer
- das x=x / 10 muss aus dem if raus, dass muss er natürlich immer machen, auch wenn die Ziffer keine 2 ist. So ist das eine schöne Endlosschleife....
- da du drei aufeinanderfolgende 2en haben willst, braucht das if einen else-Zweig mit summe=0, damit es bei einer nicht-2 die Zählung zurücksetzt
- In der Schleife braucht es ein weiteres if: "if (summe==3) return true" da ansonsten 3er Gruppen nur am Anfang der Zahl erkannt werden
Da gibt es etliche Möglichkeiten. Die Modulo Lösungen wurden dir ja schon gepostet. Natürlich kannst du sowas auch einfach als String behandeln:
public boolean hat222(int x) {
return String.valueOf(x).indexOf("222") != -1;
}
Was da letztlich effizienter ist müsste man testen und die Frage ist natürlich auch immer wie oft man sowas aufruft usw. So ist es halt ein nobrainer und leicht zu verstehen und umzusetzen.
warum nutzt du String.valueOf(x) was ist der unterschied davon zu Integer.toString(x)?
Sollte aufs Gleiche rauskommen in dem Fall. Meine da gibt es nur marginale Unterschiede bzgl. null. Ist hier ja egal, da dort steht, dass wir davon ausgehen können, dass x >= 0 ist.
int count = 0;
while(x > 0){
if(x % 10 == 2){
count = (count < 3?count+1:3);
}else{
count = 0;
}
x /= 10;
}
return count >= 3;
So sollte es (noch ungetestet) funktionieren.
Du kannst ein while auch in ein for umschreiben und andersherum. Das wäre mit for:
int count = 0;
for(;x > 0;x /= 10){
if(x % 10 == 2){
count = (count < 3?count+1:3);
}else{
count = 0;
}
}
return count >= 3;
ok aber x wird doch nie 0 das würde endlos schleife ergeben weil wir ja Immer durch 10 teilen, Beispiel:
23 / 10 = 2;
2 / 10 = 0? ääääähhh vllt klappts ja doch danke!!!!