Processing: Wie kann ich eine Programmstelle wiederholen?

2 Antworten

Mit "nicht passen" meinst du, dass der eingegebene Wert kein Integer ist?
Dafür bietet sich eine While-Schleife an. Die Exception, die entsteht, falls der Wert kein Integer ist, musst du abfangen.

nail745 
Fragesteller
 18.10.2019, 21:12

Die Aufgabenstellung sagt aus, dass es zwei bestimmte Maße gibt. Diese Maßen sollen sich an Länge und Breite anpassen. Falls die Maße im Intervall außerhalb sind, soll das Programm eine Schleife entwickeln welches das oben geschriebene wiederholen, damit man diese wiederum eintragen kann.

0
nail745 
Fragesteller
 18.10.2019, 21:16

Hat sich schon erledigt :) trotzdem danke.

0

Verwende für die Wiederholung eine do-while-Schleife:

do {
  // read values from console ...
}
while (/* check if values incorrect */);

oder nutze die draw-loop aus:

boolean valid = false;

void draw() {
  if (!valid) {
    // read values from console ...

    // if valid, set valid = true
  }
  else {
    // continue ...
  }
}  

Um Länge und Breite zu Ganzzahlen umzuwandeln, solltest du die besser passende parseInt-Methode nutzen. Diese gibt einen primitiven Typ (int) zurück, kein Integer-Objekt, welches erst via Autoboxing implizit zu int gecastet werden müsste.

In jedem Fall könnte beim Umwandeln des Strings eine NumberFormatException geworfen werden. Das heißt, wenn die Eingabe nicht umgewandelt werden kann, steht das Programm vor einem Ausnahmefall, der behandelt werden sollte. Andernfalls wird der Programmlauf abgebrochen.

boolean isNumber = true;
int lschneidebretts1;

try {
  lschneidebretts1 = Integer.parseInt(lschneidebretts);
}
catch (NumberFormatException ex) {
  isNumber = false;
}

Über die try-catch-Struktur lässt sich so ein Fall handhaben. Im obigen Block wird die kritische Aktion durchgeführt, im unteren Block wird beschrieben, was im Ausnahmefall zutun ist.

Ich habe hier eine boolsche Variable eingeführt, die Auskunft darüber gibt, ob die Umwandlung erfolgreich ablief oder nicht. Auf diesen boolschen Wert kannst du dich in deiner Schleife später auch stützen.

Zu guter Letzt noch eine Anmerkung zu deinen Bezeichnern: Schreibe Namen ruhig aus, sodass sie aussagekräftiger sind. Verwende den camelCase-Stil.

int schneidebrettLaenge = Integer.parseInt(Console.readLine());
// ...
int schneidebrettBreite = Integer.parseInt(Console.readLine());