Masz rację problem jest z dostępem do zmiennych.
Zmienić flagę (przypisać wartość) na true i zakończyć wykonanie programu będziesz mógł tylko w ciele metody main.
boolean flaga = false;
while(!flaga){
flaga = dc.DrugaClasa();
}
gdzie dc to obiekt klasy DrugaClasa
Jeżeli potrzebujesz uzależnić działanie od zmiennej flaga to metoda może być:
public boolean DrugaClasa(boolen flaga) trows MojWyjatek{
return !flaga
}
a w main:
while(!flaga){
flaga = dc.DrugaClasa(flaga);
}
Zmienna flaga w main nie jest tą samą zmienną co flaga w metodzie DrugaClasa (tylko nawy są te same). To jest kwestia widoczności zmiennych i przekazywania ich w parametach metody "przez wartość".