По сути, вы хотите, чтобы один из методов foo () или foobar () возвращал true, чтобы продолжить выполнение цикла.
boolean time_to_stop = false;
while (!time_to_stop) {
boolean foo_result = foo();
boolean foobar_result = foobar();
if (false == (foo_result || foobar_result) ) {
time_to_stop = true;
}
}
Вы можете сократить это, используя синтаксически эквивалентные структуры кода:
boolean keep_going = true;
while (keep_going) {
keep_going = foo() | foobar();
// bit-wise OR, avoids compiler short-circuiting optimization
}
Конечная комбинация:
while ( foo() | foobar() ) {};