Problem ArrayList pusta lista

0

Czesc. W main mam switch z kilkoma opcjami dodaj,usun,pokarz liste itp. Wszystko jest zamkniete w petli do{}while. Przy pierwszej petli normalnie dodaje osoby i wypisuje liste ta z funkcji ale jak chce wywolac w drugim obiegu tylko liste to jest znowu pusta. Jakies pomysly jak update liste ? Dzieki pozdrawiam

public class Osoba {

    String nazwisko;

ArrayList<Object> lista=new ArrayList<>();

    public void dodajOsobe(){
            Scanner odczyt = new Scanner(System.in);
            System.out.print("Podaj swoje nazwisko: ");
            nazwisko = odczyt.nextLine();
            lista.add(nazwisko);
        
        System.out.println(lista);
    }
    public void wypiszListe(){
        System.out.println(lista);
    }

    public void usunOsobe(){
        System.out.println("Podaj imie osoby do usuniecia: ");
        Scanner odczyt =new Scanner(System.in);
        nazwisko=odczyt.nextLine();
        lista.remove(nazwisko);
    }
        }
import java.util.Scanner;

public class Recepcja {
    public static void main(String[] args){
        int wybor;
        do{
        System.out.println("Witaj w Hotelu Niebo. \n"+
        "1.Czy sa wolne pokoje\n"+"2.Ile jest wolnych pokoji:\n"+"3.Wynajmij dowolny pokoj\n"+
         "4.Wynajmij pokoj o wybranym numerze: \n"+"5.Czy mozna wynajac sasiedni pokoj\n"+
        "6.Dodaj osobe wynajmujaca\n"+"7.Usun osobe wynajmujaca\n"+
         "8.Sprawdz czy ktos juz wynajmuje pokoj o danym nazwisku\n"+ "9.Wypisz osoby wynajmujace\n"+
        "10.EXIT....");

        Hotel w=new Hotel();
        Osoba o=new Osoba();


        Scanner odczyt=new Scanner(System.in);
        System.out.print("Wybierz jedna z opcji:......");
        wybor=odczyt.nextInt();


            switch (wybor){
                case 1:break;
                case 2:break;
                case 3:     w.wyborPokoju(); break;
                case 4:break;
                case 5:break;
                case 6:     o.dodajOsobe(); break;
                case 7:     o.usunOsobe(); break;
                case 8: break;
                case 9:     o.wypiszListe(); break;
                case 10: break;
                default: System.out.println("Pomylka"); break;
            }
        }while(wybor!=10);


    }
}

1
pawel8903 napisał(a):

Czesc. W main mam switch z kilkoma opcjami dodaj,usun,pokarz liste itp. Wszystko jest zamkniete w petli do{}while. Przy pierwszej petli normalnie dodaje osoby i wypisuje liste ta z funkcji ale jak chce wywolac w drugim obiegu tylko liste to jest znowu pusta. Jakies pomysly jak update liste ? Dzieki pozdrawiam

Za każdym razem tworzysz nową osobę która ma swoją listę. Klasa osoby powinna być oddzielnie, dodawanie oddzielnie i lista oddzielnie.

Co robisz po kolei w pętli:

  1. Wyświetlasz informacje co musi kliknąć użytkownik.
  2. Tworzysz obiekt hotelu i osoby.
  3. Czekasz na wybór użytkownika.
    a. Jak wybierze 6, to pobiera od użytkownika imię i zapisuje je do listy.
  4. Koniec pętli.
    I od nowa, wyświetla info, tworzy NOWY obiekt hotelu i osoby (nowa osoba - nowa lista).

Jak powinno wyglądać to lepiej:

  1. Tworzysz listę użytkowników.
  2. Wyświetlasz info dla użytkownika co ma kliknąć.
  3. Jeśli kliknie 6, to pobiera dane użytkownika.
    a. Tworzysz nowego usera, z ww danymi.
    b. Zapisujesz go do listy.
    A w następnej pętli wyświetlasz i wyświetli Ci bo listę zainicjowałeś przed tą pętlą.
0

Dziekuje wielkie za pomoc. To pierwszy program jaki probuje zrobic w JAVA a wczesniej bawilem sie w c++. Powinienem bardziej nad tym powyslec to bym sam na to w padl. No nic wielkie dzieki pozdrawiam

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