Program zamyka się – petle while

0

Witam, mam taki program który wyświetla prymitywną bazę klientów, mam do wyboru trzy opcje: 1-pokazujemy wszystkich, 2-pokazujemy mężczyzn, 3-pokazujemy kobiety. Wszystko działa ok gdy, wybieramy po kolei, najpierw 1, pozniej 2 i 3, a gdy zaczniemy rozne kombinacje 2, 3, 1, 2, 3 to program zamyka się. Ktoś może mi powiedzieć dlaczego ?

package Lesson2;

import java.util.Scanner;

public class L02P02ClientsSelect {
    public static void main(String[] args) {

        String person = "Mateusz Nowak 17 Rzeszow 38-345 Pogodna1 765483726";
        int a;
        String select;
        String menu = "\nBaza danych klientów. \n Wybierz: \n 1 - jesli chcesz zobaczyc wszystkich klientów " +
                "\n 2 - jesli chcesz zobaczyc tylko mężczyzn \n 3 - jesli chcesz zobaczyc tylko kobiety \n" +
                " 4 - jesli chcesz wyjść ";
        Scanner read = new Scanner(System.in);

        System.out.println(menu);
        select = read.next();
        // Select all
        while(select.equals("1")) {
            System.out.println("\nKlienci: wszyscy");
            for (a = 1; a <= 10; ++a) {
                while (a == 1) {
                    System.out.println(person);
                    break;
                }
                while (a == 2) {
                    person = "Anna Kowalska | 22 | Kraków | 34-234 | Grunwaldzka11 | 987483726";
                    System.out.println(person);
                    break;
                }
                while (a == 3) {
                    person = "Krzysztof | Haus | 56 | Warszawa | 36-200 | Zygmunta78 | 765849045";
                    System.out.println(person);
                    break;
                }
                while (a == 4) {
                    person = "Maciej | Jakula | 19 | Nowy Sącz | 38-654 | Rejtana43 | 876436726";
                    System.out.println(person);
                    break;
                }
                while (a == 5) {
                    person = "Anna | Kowalska | 22 | Kraków | 34-234 | Grunwaldzka1 | 987483723";
                    System.out.println(person);
                    break;
                }
                while (a == 6) {
                    person = "Joanna | Matyszczak | 33 | Kraków | 34-236 | Rzeszowska1 | 765839685";
                    System.out.println(person);
                    break;
                }
                while (a == 7) {
                    person = "Jakub | Gąska | 231 | Wrocław | 33-645 | Katowicka65 | 567483726";
                    System.out.println(person);
                    break;
                }
                while (a == 8) {
                    person = "Rafał | Popek | 18 | Łódź | 36-123 | Warszawska55 | 876234876";
                    System.out.println(person);
                    break;
                }
                while (a == 9) {
                    person = "Dawid | Myka | 54 | Kraków | 32-634 | Ładna43 | 987548726";
                    System.out.println(person);
                    break;
                }
                while (a == 10) {
                    person = "Paulina | Pleśniak | 29 | Zakopane | 32-237 | Krakowska71 | 653483726";
                    System.out.println(person);
                    break;
                }
            }
            break;
        }

        System.out.println(menu);
        select = read.next();
        //Select man
        while (select.equals("2")){
            System.out.println("\nKlienci: mężczyźni");
            for (a = 1; a <= 6; ++a) {
                while (a == 1) {
                    System.out.println(person);
                    break;
                }
                while (a == 2) {
                    person = "Krzysztof | Haus | 56 | Warszawa | 36-200 | Zygmunta78 | 765849045";
                    System.out.println(person);
                    break;
                }
                while (a == 3) {
                    person = "Maciej | Jakula | 19 | Nowy Sącz | 38-654 | Rejtana43 | 876436726";
                    System.out.println(person);
                    break;
                }
                while (a == 4) {
                    person = "Jakub | Gąska | 231 | Wrocław | 33-645 | Katowicka65 | 567483726";
                    System.out.println(person);
                    break;
                }
                while (a == 5) {
                    person = "Rafał | Popek | 18 | Łódź | 36-123 | Warszawska55 | 876234876";
                    System.out.println(person);
                    break;
                }
                while (a == 6) {
                    person = "Dawid | Myka | 54 | Kraków | 32-634 | Ładna43 | 987548726";
                    System.out.println(person);
                    break;
                }
            }
            break;
        }

        System.out.println(menu);
        select = read.next();
        //Select woman
        while(select.equals("3")) {
            System.out.println("\nKlienci: kobiety");
            for (a = 1; a <= 4; ++a) {
                while (a == 1) {
                    person = "Anna Kowalska | 22 | Kraków | 34-234 | Grunwaldzka11 | 987483726";
                    System.out.println(person);
                    break;
                }
                while (a == 2) {
                    person = "Anna | Kowalska | 22 | Kraków | 34-234 | Grunwaldzka1 | 987483723";
                    System.out.println(person);
                    break;
                }
                while (a == 3) {
                    person = "Joanna | Matyszczak | 33 | Kraków | 34-236 | Rzeszowska1 | 765839685";
                    System.out.println(person);
                    break;
                }
                while (a == 4) {
                    person = "Paulina | Pleśniak | 29 | Zakopane | 32-237 | Krakowska71 | 653483726";
                    System.out.println(person);
                    break;
                }
            }
            break;
        }

        System.out.println(menu);
        select = read.next();
        while(select.equals("4")){
            System.out.println("\nZamknięto program");
            System.exit(0);
        }
    }
}
1

Dochodzi do końca funkcji więc się kończy. Powinieneś w pętli pobierać znaki i wykonywać co tam chcesz. Teraz to jest jakaś parodia programu. Chyba Ci się w ogóle if z while pomylił :D

0

Tak za hardcodowanych danych to chyba jeszcze nie widziałem. Trzeba mieć fantazję.
Tak swoją drogą, wybranie 3 a później 2 nie sprawi, że przypadkiem wypisze się kobieta? "Paulina | Pleśniak" Tak dokładnie

0

Sugeruję zapoznać się z warunkiem wielokrotnego wyboru

0

Zamień wszystkie while na if, a całą funkcję opakuj w while (true)

I wywal wszystkie read.next() poza pierwszym.

1

A mnie zastanawia tekst "mam taki program", gdzie w środku są dane autora: Mateusz N., a autorem posta jest niejaki @grzesiekm0.

0

W normalnym języku mógłbyś spróbować użyć GOTO ale to Java (choć jest nadzieja że w końcu to dodadzą) :/

0

Tych if'ów tutaj w ogóle być nie powinno. Starczy zrobić kolekcję osób i prezentować dane per osoba[i]. Tak to ciekawe co autor zrobi kiedy osób będzie 1000. :-)

0

Jesli przerabiasz jakas ksiazke/tutorial to po prostu czytaj dalej. Tak sie nie robi, dalej Cie pewnie nauczy jak to zrobic. A jak nie przerabiasz to zacznij.

Ale odpowiedz jest taka, ze wywolujesz (a raczej wypisujesz) menu dokladnie 4 razy i 5 raz sie nie wywola...

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