implementowanie klas do przechowywania danych

0

Hej mam takie zadanie
Zaimplementuj klasę Student, do przechowywania imienia, nazwiska, numer indeksu i obecność (wyrażonej w procentach) oceny z POJ (typu int). Jeżeli podczas tworzenia obiektu nie zostało przekazane imię i nazwisko, pola powinny być ustawione wartością "Unknown". Dodaj odpowiednie metody set i get do wszystkich pól klasy. Jeżeli obecnocność jest mniejsza niż 50%, student powinien otrzymać ocenę 2. Przetestuj program, tworząc trzy różne obiekty klasy Student
.
Na ten moment stworzyłam plik Student.java

    public class Student {
    private String imie;
    private String nazwisko;
    private String nrindex;
    private int obecnosc;
    private int oceny;

    public Student(String imie, String nazwisko, String nrindex, int obecnosc, int oceny) {
        this.imie = imie;
        this.nazwisko = nazwisko;
        this.nrindex = nrindex;
        this.obecnosc = obecnosc;
        this.oceny = oceny;
    }

    public String getImie() {
        return imie;
    }

    public void setImie(String imie) {
        this.imie = imie;
    }

    public String getNazwisko() {
        return nazwisko;
    }

    public void setNazwisko(String nazwisko) {
        this.nazwisko = nazwisko;
    }

    public String getNrindex() {
        return nrindex;
    }

    public void setNrindex(String nrindex) {
        this.nrindex = nrindex;
    }

    public int getObecnosc() {
        return obecnosc;
    }

    public void setObecnosc(int obecnosc) {
        this.obecnosc = obecnosc;
    }

    public int getOceny() {
        return oceny;
    }

    public void setOceny(int oceny) {
        this.oceny = oceny;
    }
}

i plik StudentMain.java

import java.util.Scanner;
public class StudentMain {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        int a, b, c, d, e;

        Student.setImie(a);
        Student.setNazwisko(b);
        Student.setNrindex(c);
        Student.setObecnosc(d);
        Student.setOceny(e)

        System.out.println("Podaj imię: ");
        a = scan.nextInt();
        System.out.println("Podaj nazwisko: ");
        b = scan.nextInt();
        System.out.println("Podaj Numer indeksu: ");
        c = scan.nextInt();
        System.out.println("Podaj obecność w %: ");
        d = scan.nextInt();
        if(d > 50) {
            System.out.println("Podaj swoją ocenę: ");
            e = scan.nextInt();
        }else{
            e == 2}
        System.out.println(a); //wersja robocza wypisania wyników
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
    }
}

Moim głównym problemem jest to, że nie wiem jak w pliku StudentMain pobrać dane które zostaną przypisane do konkretnych pól klasy.

1

Student.setImie(a); nie zadziała. Java w takiej sytuacji będzie sobie szukać metody statycznej, co na pewno nie jest tutaj dobrym rozwiązaniem. Stwórz sobie instancję klasy, tak jak to zrobiłaś z klasą Scanner.

Druga rzecz, po kodzie wygląda na to, że myślisz, że przypisując tę zmienną a tworzysz jakieś trwały związek pomiędzy tą zmienną, a polami w obiekcie. Dość częsty błąd początkującego, ale tak nie jest. Wczytuj wartość ze scannera i wtedy przypisuj wartość zmiennej do pola obiektu.

Kolejna rzecz to wszędzie robisz readInt. Int to liczba, jeśli chcesz wczytać na przykład imię to użyj nextLine i użyj typu String.

0
stokrotka221b napisał(a):

Przetestuj program, tworząc trzy różne obiekty klasy Student

Nie stworzyłeś ani jednego obiektu klasy Student. Zacznij od tego, a reszta się pewnie sama wyjaśni po drodze. Masz jakieś dobre IDE? Bo są tu też inne rzeczy co powinny na czerwono wyskakiwać np twoje else. Generalnie ja na twoim miejscu bym sobie darował na jakiś dzień/dwa obiektowe i poćwiczył typy proste, przypisywanie zmiennych, instrukcje warunkowe itd. bo warto najpierw to ogarnąć, a chyba jeszcze trochę problem z tym masz. Korzystasz z jakiegoś konkretnego kursu/książki?

Swoją drogą, miejsce w kodzie gdzie stworzysz te obiekty też ma znaczenie. Np. gdyby te settery działały tak jak myślisz, że działają, to przypisałeś do nich puste, niezainicjowane wartości. Zadeklarowałeś zmienną a, bez żadnej wartości, po czym przypisałeś ją do klasy (a powinieneś do obiektu btw) właśnie z tą wartością, czyli zero. Dopiero potem próbujesz zainicjować zmienną "a" wartością ze Scannera, co już nie zmieni wcześniejszej wartości w Student (gdyby w ogóle to tak działało).

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