Wywołanie return z poziomu innej metody

0

Powiedzmy że mam dwie metody:

public void metoda1() {
  metoda2();
  metoda2();
  metoda2();
  metoda2();
  // ...
}
private void metoda2() {
  if(warunek) {
    // Tu trzeba zwrócić return dla metody1, aby przerwała wykonywanie kolejnych metod2.
  }
}

Druga wywołuje się w pierwszej x razy. Czy da się zrobić tak, aby po spełnieniu warunku w metodzie2, ta zwracała do metody1 return; co przerywałoby jej działanie? Chodzi mi tylko i wyłącznie o rozwiązanie, które nie zwiększy ilości kodu metodzie1 !! Zdecydowałem się na taką organizację kodu, ponieważ pierwsza metoda musi pozostać czytelna (stąd też pomysł przerzucenia IFów do metody 2).

Mam nadzieję, że udało mi się w miarę sensownie wytłumaczyć problem i z góry dziękuję za pomoc. :)

0

Na potrzeby przykladu, przyjalem x = inf (dopoki warunek == false).

public void metoda1() {
    while(metoda2());
}

public Boolean metoda2() {
    return warunek;
}

Co sie ogranicza do tego:

public void metoda1() {
    while(warunek);
}

Nadal nie widze sensu sprawdzanie x razy pod rzad tego samego warunku.

0

Hmm, chyba nie dopowiedziałem najważniejszego - metoda2() przyjmuje kilka parametrów, zatem nie można wywołać jej w pętli, ponieważ za każdym razem te parametry będą inne.

private void metoda2(String warunek1, String warunek2, String warunek3) {}
0

Jeśli znasz ograniczenie górne na ilość wywołań metody metoda2, to

public void metoda1() {
  if !metoda2(...) return;
  // ...
}
private boolean metoda2()
{
    if(!warunek) return false;
    //wykonaj kod
    return true;
}
0
boolean value = (metoda1() || metoda2() || metoda3())
boolean metoda1(){
 ...
  return ...;
}

W teorii jeśli jedna zwróci true, to następne się nie wykonają. Jak nie działa, to spróbuj pozamykać je w nawiasy, żeby każdy operator "||" był tylko dwuelementowy, nie zestawiony z innym.
Nie wiem, czy przypisanie do zmiennej value jest potrzebne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1