Jak dla mnie pętla for działa poprawnie, aczkolwiek twoje rozwiązanie nie jest najlepsze.
Znalazłem tu kilka błędów.
Drugi błąd jest następujący: Nie mogę uruchomić systemu logowania. Po kliknieciu 2 resetuje się i wraca do "Menu Głównego" zamiast wyświetlić tekst.
Twój kod każe po wybraniu 2 wypisać tekst i zakończyć działanie. Nie wiem czy taki był Twój zamysł, czy nie chciałeś czasem czekać na jakieś dane?
if (wybor == 2) {
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
//Scanner in = new Scanner(plik);
//String logyn = in.nextLine();
System.out.println("Podaj login: ");
}
Kolejna moja wątpliwość to zapis
if (wybor > 3) {
new ProcessBuilder("cmd", "/c", "cls").inheritIO().start().waitFor();
System.exit(1);
}
W menu chcesz aby po wybraniu 3, program się zakończył. Twój kod mówi coś innego... naciśnij coś więcej ale nie 3 aby zakończyć program. Powinieneś być konsekwentny i zapisać warunek np if(wybór ==3).
Dobra praktyka aby kod był bardziej odporny na błędy. Używaj bloku try catch z resourcami zamiast try catch finaly.