Wątek przeniesiony 2014-12-17 13:05 z Java przez bogdans.

Tworzenie tablicy dynamicznej jako element klasy.

0

Witam, otóż trafiłem na projekt zaliczeniowy w którym muszę utworzyć klasę, która będzie zawierać X obiektów definiowanych przez elementy typu ID, nazwa, nazwa katalogowa itp.

Problemem jest to, że z góry nie wiem ile user chciałby wprowadzić elementów, dlatego też obiektem tej klasy musiałaby być tablica dynamiczna. W jaki sposób przeskoczyć ten problem? Nie ukrywam, że javy dopiero się uczę stąd potrzebuję nieco więcej pomocy.

        Scanner klaw = new Scanner(System.in);
       
        
        System.out.println("Ile wpisow do BD chcesz dodac?");
        int ile_wpisow = klaw.nextInt();
        
        int []gwiazda = new int[ile_wpisow]; 
        
        
        int newID_gwiazda;
        String newGwiazdozbior;
        String newNazwa_katalogowa;
        

        for (int i=0; i<ile_wpisow; i++)
        {
            System.out.println("Wpis nr: " + i);
            //tutaj chciałbym coś w ten deseń, niestety nie wiem jak to zrobić oraz co zadeklarować wcześniej.
            **gwiazdozbiory gwiazda[i]** = new gwiazdozbiory(); //konstruktor narazie domyślny, później stworzę własny.

            System.out.println("Podaj wartosc pola 1:");
            newGwiazdozbior = klaw.nextLine();
            **gwiazda[i]**.setGwiazdozbior(newGwiazdozbior);

            //itd.

        }
 public class gwiazdozbiory 
{
        private int ID_gwiazda;  //licznik petli w programie
        private String Gwiazdozbior;
        public String Nazwa;
        
        //================================================metody wpisujace dane\
        public void setID_gwiazda(int newID_gwiazda)
        {
            ID_gwiazda = newID_gwiazda;   
        }
        
        public void setGwiazdozbior(String newGwiazdozbior)
        {
            Gwiazdozbior = newGwiazdozbior;   
        }
        
        public void setNazwa_katalogowa(String newNazwa_katalogowa)
        {
            Nazwa_katalogowa = newNazwa_katalogowa;   
        }
        //---------------------------------------------------------------------/
        
        
        
        //============================================metody wyswietlajace dane\
        public int getID_gwiazda()
        {
            return ID_gwiazda;
        }
        
        public String getGwiazdozbior()
        {
            return Gwiazdozbior;
        }
        
        public String getNazwa_katalogowa()
        {
            return Nazwa_katalogowa;
        }
        //---------------------------------------------------------------------/

W jaki spsób to ugryźć? Liczyłbym na bardzo łopatologiczne wytłumaczenie i pomoc.

1
gwiazdozbiory[] gwiazda = new gwiazdozbiory[ile_wpisow];
for (int i = 0; i < ile_wpisow; ++i) {
    System.out.println("Wpis nr: " + i);
    gwiazda[i] = new gwiazdozbiory();
    ...
    gwiazda[i].setGwiazdozbior(newGwiazdozbior);
}
1

Użyj jakiejś kolekcji.

public class User {
    private long id;
    private string name;

    // tutaj set'ery i get'ery
    ...
}
public class BaseOfUsers {
    // np. arrayList
    private ArrayList<User> users = new ArrayList<User>();

    public void addUser(User user) {
        this.users.add(user);
    }
    
    ...
}

Przykład pisany na szybko, ale powinno być ok.

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