Terminieren diese Schleifen

Paeonia2015

Mitglied
Hey allerseits;

Ich hab hier zwei Aufgabe, die mich irgendwie durcheinander bringen, man soll dabei einfach nur a und b berechnen. Aber bei mir kommt bei den b`s immer eine andere zahl als in der Lösung.

Java:
int a=1;
int b=2;
while(a<6) {
   a=a+2;
   switch(a%3) {
      case0: b=a-b;
      case1:b=a*b;
   }
}

Die Lösung ist a=7 und b=21

und
Java:
int a=1;
int b=2;
do {
   a=a+2;
   b=a+b;
   if((b%3) ==0) continue;
   b=b+1;
   if((b%3) == 2) break;
} while (a!=0);

Die Lösung a=7 und b=20

Wie gesagt das a stimmt mit meinem Ergebnis überein. Aber beim b hab ich ein anderes ergebnis bei beiden. Kann mir vllt jemand erklären worauf ich ganau achten muss? Und vllt einen Ansatz geben wie ich bei solchen Aufgaben vorangehen sollte.
 
Zuletzt bearbeitet von einem Moderator:
Wie sollen wir dir bei der Aufgabe helfen, wenn du uns gar nicht sagst was genau die Aufgabe ist? 😉

Ansonsten:
Nutz bitte Code tags: [code=java]hier kommt dein code hin[/code]
Ein Problem könnte bei dem switch liegen:
Java:
switch(a%3){
case 0:
  b=a-b;
  break;
case 1:
  b=a*b;
  break;
}
Ohne break werden die nachfolgenden cases mitausgeführt
 
Na dann am besten den code mal zeile für zeile durchgehen.
Folgende Sachen könntest du vielleicht falsch gemacht haben:
Java:
switch(a%3){
case 0: b=a-b;
case 1:b=a*b;
}
Wenn a%3 == 0 ist, dann wird case 0 ausgeführt: b=a-b;
Da aber kein break genutzt wird, läuft der code weiter durch und führt außerdem noch b=a*b aus.

Java:
if((b%3) ==0) continue;
Wenn nun b durch 3 teilbar ist, wird ein continue ausgeführt, dies bedeutet, dass die Schleife wieder vorn vorn beginnt. Dabei wird direkt wieder an den Anfang der Schleife gesprungen
Java:
if((b%3) == 2) break;
Hier wird die Schleife komplett verlassen
 

Neue Themen


Zurück
Oben