Java tworzenie klasy - kłopoty

0

Witam.
Mam takie zadanie:
http://4programmers.net/Pastebin/2507
i napisałem coś takiego: http://4programmers.net/Pastebin/2510 - kod klasy
http://4programmers.net/Pastebin/2509 - kod maina
Chciałem was zapytać co tam mam "do bani"? I prosić o ewentualne poprawki.
Jestem Początkujący w Javie i nie wiem jeszcze o co biega.
Z góry dzięki i pozdrawiam.

1

Jest bardzo dobrze. Teraz musisz wydrukować w konsoli informacje o studentach. Są na to dwa sposoby:

   public static void main(String[] args) {
        Student s1 = new Student("Wojtek",5,5,5);

        st1.wyswietl();

        //lepiej jednak gdybyś zamiast funkcji wyświetl przeciążył metodę toString() 

        System.out.println(s1); 
    }

1

Nie wiem czy te metody od początku do końca sam pisałeś ale w przyszłości polecam użyć Refactoringu np. Netbeans: prawy nacisk myszy/Refactor/Escapsualte Fields - tam sobie wybierasz dla jakich pól chcesz stworzyć metody set i get i ustalasz od razu czy maja być prywatne (te pola).

1

Ogólnie wydaje się być ok napisane. Tylko zastanawia mnie po co w konstruktorze zwiększasz id studenta?

studentId++;

Chyba, że id pierwszego studenta wynosi 0 to wtedy rozumie taką operację. Bo jeśli od 1, to co wtedy? Przy utworzeniu pierwszego studenta przekazujesz w konstruktorze id równe 1 i potem tą wartość zwiększoną o 1 przypisujesz do studnetCount i wynosi ona 2, a w rzeczywistości masz 1 studenta. Ja sam jeśli chodzi o idstudenta to wywaliłbym tą operację:

studentId++;
studentCount = studentId;

Tylko dał

studentCount++;

Zmienna ta będzie na początku i tak 0, a z każdym dodaniem studenta do systemu po prostu ją zwiększysz o 1, beż jakichś dodatkowych przypisań otrzymasz ten sam efekt.

W ogóle w twoim kodzie nie widzę konstruktora 4 argumentowego a za pomocą takiego tworzysz studentów w mainie.

Jeśli chodzi o te gettery i settery to faktycznie samemu nie ma co się bawić bo dużo czasu to zajmuje. Wyżej już zostało napisane jak rozwiązać to w Netbeansie, a gdybyś korzystał z Eclipse to sprawa wygląda tak: klikasz na nazwę klasy ppm -> source -> generate Getters i Setters.

0

http://4programmers.net/Pastebin/2511
http://4programmers.net/Pastebin/2512
Teraz mam jak powyżej i dzięki wam Panowie jest ok, ale nie do końca, bo ja tam wyświetlam id każdego studenta więc dla s1 ma być 1, dla s2 2 itd.
Niestety jak widać cały czas dla każdego studenta wartość id jest taka sama. Co trzeba zrobić by się zwiększała dla każdego kolejnego studenta?
Jeszcze raz dzięki.

1

A gdzie Ty teraz cokolwiek robisz z id studenta? Ja nie widzę żebyś gdziekolwiek robił coś z tą wartością. Myślę, że najlepszym rozwiązaniem będzie powiązanie idstudenta ze zmienną przechowującą liczbę studentów. Coś takiego:

    public Student(String name, double grade1, double grade2, double grade3) {
        this.name = name;
        this.grade1 = grade1;
        this.grade2 = grade2;
        this.grade3 = grade3;
        studentCount++;
        this.studentId = studentCount;
    }

Wtedy każdy dodany student dostanie kolejny numer jako swoje id.

1
    public Student(String name, double grade1, double grade2, double grade3) {
        this.name = name;
        this.grade1 = grade1;
        this.grade2 = grade2;
        this.grade3 = grade3;
        studentCount++;
        this.studentId = studentCount;        
    }
...
    void wyswietl() {
        System.out.println("Dane studenta: ");
        System.out.println("ID: " + studentId);
        System.out.println("Imię: " + name);
        System.out.println("Średnia ocen: " + srednia_ocen());
        System.out.println(studentId);
    }
0

Ok Panowie wielkie dzięki :) Wszystko działa.

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