Najwidoczniej problem z tablicami

0

Witam.
Jestem w trakcie nauki języka programowania Java,niedawno(po raz chyba trzeci)doszedłem do działu Programowania Obiektowego,znalazłem tam Zadanie które sobie trochę urozmaiciłem.Całość składa się z dwóch klas.Aby nie zajmować zbyt wiele czasu,usunę zbędne (jak dla mnie) fragmenty kodu.
Klasa: Firma
Zaimportowałem .util.Scanner;
"Doczepiłem" klasę "Pracownik" jako "works"

//Podajemy tutaj maksymalną ilość Pracowników w tablicy
    works.MWorkers = odczyt.nextInt();
    while(true){
    System.out.println("\n\n\t====Menu Główne====");
    System.out.println("\n\t"
            + "1.Ustawianie Imienia oraz Nazwiska wybranego Pracownika\n"
            + "\t2.Zmiana wieku wybranego pracownika\n"
            + "\t3.Wyświetl aktualną listę Pracowników\n"
            + "\n>");
//Funkcji 2 i 3 jeszcze nie zrobiłem,z powodu Funkcji nr.1,to w niej jest błąd
    int Select = odczyt.nextInt();
    switch(Select){
        case 1://
            System.out.print("\nID>");
            int ID = odczyt.nextInt();
            System.out.print("\nImie>");
            String DataI = odczyt.nextLine();
            System.out.print("\nNazwisko>");
            String DataN = odczyt.nextLine();
            System.out.println("\n\nŁadowanie...");
            works.name_set(ID, DataI, DataN);
            break;
    }
    }
    }
}

A teraz druga klasa - "Pracownik"

public class Pracownik {
    int MWorkers;
    String worker[][] = new String[MWorkers][1];
    int workerY[] = new int[MWorkers];
        public void name_set(int ID, String N, String NB){
            worker[ID][0] = N;
            worker[ID][1] = NB;
        }
        public void age_set(int ID, int AGE){
            workerY[ID] = AGE;
        }
}

Za odpowiedzi,serdeczne dzięki :)

0

A jakie jest pytanie?

0

Gdzie popełniłem błąd,dlaczego gdy podaję Imię lub nazwisko,program ma z tym problem i przestaje działać?

0

Kod się kupy nie trzyma.

public class Pracownik {
    int MWorkers;
    String worker[][] = new String[MWorkers][1];
    int workerY[] = new int[MWorkers];
        public void name_set(int ID, String N, String NB){
            worker[ID][0] = N;
            worker[ID][1] = NB;
        }
        public void age_set(int ID, int AGE){
            workerY[ID] = AGE;
        }
}
  1. tworzysz tablicę worker korzystając z pola MWorkers, które ma wartość zero => tablica ma rozmiar zero.
  2. gdyby nawet MWorkers było dodatnie, to
    • użytkownik podaje ID jakie mu się podoba => worker[ID] = ... doprowadzi zapewne do przekroczenia zakresu,
    • worker[ID][1] na pewno prowadzi do przekroczenia zakresu, wiersze tablicy mają rozmiar 1.
      Skoro to jest programowanie obiektowe, to klasa Pracownik powinna wyglądać raczej tak:
public class Pracownik
{
     String imie;
     String nazwisko;
     int ID;
     int wiek;
     public Pracownik(String imie, String nazwisko, int ID)
     {
          this.imie = imie;
          ....
     }
     //ewentualnie gettery i settery
}
Pojemnik do przechowywania pracowników powinieneś tworzyć w głównej klasie:
```java
ArrayList<Pracownik> workers = new ArrayList<Pracownik>();

i po pobraniu danych od użykownika

workers.add(new Pracownik(DataI,DataN,ID));
0

Wielkie Dzięki,a więc po prostu,Tablica jest po prostu za mała,bo te moje "MWorkers" się wcale nie kleją,chyba zrozumiałem.A dane mam trzymać w klasie głównej.Na Getterach,Setterach i Listach się jeszcze wcale nie znam,ale prędzej czy później do tego dojdę.Jeszcze raz Wielkie Dzięki!

Wie ktoś może dlaczego co post,wyświetla mi się okienko,że post nie dotarł,a dotarł?Ja nie lubię spamować.

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