Obiekty, metoda

0

Więc ogólnie dopiero zaczynam moją zabawę z Javą i mam takie oto pytanie.

Napisałem klasę Ocena, Kurs oraz Student;

Mając obiekt klasy Ocena (ocena studenta) chciałem stworzyć metodę, która wypisze mi osoby które zdały dany kursy czyli mają ocenę od 3.0. Ale nie wiem jak to zrobić.

Prosiłbym o pomoc.

0

Pokaż co masz.

0

Mam tak:

Klasa Student:

public class Studenci {
String nazwisko;
int indeks;

public Studenci (String nazw, int nr){
	this.nazwisko = nazw;
	this.indeks = nr;
}
public String toString(){
	return "Nazwisko " +nazwisko+ " Indeks " +indeks;
}

}

Klasa Ocena:

public class Ocena {
double nota;

public Ocena (double d){
this.nota = d;
}
Ocena oc=new Ocena(2.0);

Ocena getOcena (Ocena oc){
return oc;
}
public String toString(){
return "Ocena " +nota;
}

Klasa Kurs:

import java.util.Random;

public class Kursy {
String nazwa;
int kod;

public Kursy (String nazw, int k){
this.nazwa=nazw;
this.kod=k;
}

int dajKod (int kodzik){
return kodzik;
}

String dajNazweKursu(){
return nazwa;
}

public String toString(){
return "Kod " +kod+ " Nazwa Kursu " +nazwa;
}
}

Testowa:

import java.util.Scanner;

public class Testowa {

public static void main (String[] args){

	

Scanner wej = new Scanner(System.in);
Scanner wpis = new Scanner(System.in);

int i=0;
Ocena oc=new Ocena (wpis.nextDouble());
while (i>3){
i++;
System.out.println("Podaj nazwe kursu i jego kod");
Kursy k1 = new Kursy (wpis.nextLine(), wej.nextInt());
System.out.println("Podaj nazwisko i indeks");
Studenci s1 = new Studenci (wpis.nextLine(), wej.nextInt());
System.out.println("Podaj ocene");

	System.out.println (k1.toString());
	System.out.println (s1.toString());
	System.out.println (oc.toString());
	//dajZaliczonych(oc);	
	System.out.println (oc.dajZaliczonych(i));

}

}

}

Jak zrobić metodę wyświetlającą studentów którzy zaliczyli kurs ?

0

Tak na moje oko to klasa Kurs powinna mieć zbiór studentów, którzy na ten kurs chodzą, a klasa Student powinna mieś listę ocen, które student dostał. Metoda wyszukująca studentów z ocenami co najmniej 3.0 powinna znajdować się w klasie Kurs. Tak by było logicznie.

ATSD:
Odpalałeś ten kod? Klasa Ocena ma w środku automatycznie tworzony obiekt typu Ocena. To powoduje (przynajmniej powinno) nieskończoną rekurencję i wysyp programu z powodu braku pamięci.

ATSD:
Skrót Alt+Shift+F w NetBeansie już nie działa?

0

Jak mówiłem jestem początkujący jeśli chodzi o javę a jest to trudny przedmiot. Nie używam Netbansa, a Eclipse'a. Jak powinny wyglądać poprawnie zdefiniowane te klasy?

Mam też pytanie o same obiekty. Gdzie je tworzyć w klasie testowej (main) czy w danej klasie jak np Ocena ?

0

No to w Eclipse masz Shift+Ctrl+F. Działa chyba nawet lepiej.

Ale jakie obiekty? W Javie wszędzie są obiekty. W czym wcześniej programowałeś?

0

Wcześniej język C, teraz chciałem nauczyć się Javy, jednak napotyka problemy z niektórymi sprawami

0

No to długa droga przed tobą. Najlepiej jakbyś zamówił jakieś korepetycje z Javy, albo ewentualnie przerabiał jakieś tutoriale czy książki. Przejście z C na Javę jest trudne, tłumaczenie na forum co i jak zajęłoby miesiąc.

0

A jaki tutorial polecasz, albo co Tobie pomogło zrozumieć JAVĘ ?

0

Heh, no ja Javę poznałem dopiero na studiach. Wcześniej programowałem najwięcej w asemblerze i nijak sam nie mogłem zrozumieć jak Java działa :P Zresztą programy w asmie były ileś tam razy szybsze od Javowych wtedy, gdy ja zaczynałem programować, więc uraz do Javy się długo utrzymywał. Teraz JVMy już tak nie zamulają.

Jeśli nie masz kogoś pod ręką to polecam książki. Przed chwilą wypatrzyłem na Helionie tylko jedną wartą uwagi (aktualną i dostępną): http://helion.pl/ksiazki/java-podstawy-wydanie-viii-cay-s-horstmann-gary-cornell,javpd3.htm
89 PLN i pewnie co najmniej 2 - 3 miesiące zabawy :)

Sporo nauczyłem się z tutoriali Suna (teraz przejętego przez Oracle): http://download.oracle.com/javase/tutorial/ Ale to już bardziej jak przeczytasz książkę.

0

Okej, dzięki.

Jeszcze takie pytanie o tą metodę wypisującą studentów którzy zdali kurs:
jak ją dokończyć, albo co zmienić bo kompilator się buntuje w miejscu kiedy chcę sprawdzić Object oc > 2.0

Ocena dajZaliczonych(Ocena oc) {
	if (oc > 2.0) {
0
class Ocena
{
    private double nota;
[...]
    public double getNota()
    {
          return nota;
    }
[...]
}

Ocena dajZaliczonych(Ocena oc)
{
    if (oc.getNota() > 2.0)
    {
         [...]
     }
     [...]
}

Nie możesz rzutować obiektu jakieś klasy na typ podstawowy :) Polecam książkę, którą dał Wibowit. Zdecydowanie warta tych pieniędzy. W każdym razie przestawi Ci rozumowanie na bardziej obiektowe ;)

0
Yob napisał(a)

Ocena dajZaliczonych(Ocena oc)
{
    if (oc.getNota() > 2.0)
    {
         [...]
     }
     [...]
}

Można to dokończyć tak: ?


Ocena dajZaliczonych(Ocena oc)
{
    if (oc.getNota() > 2.0)
    {
         return oc;
     }else{
     return null;
}}
0

Syntaktycznie jest raczej ok. Jeżeli spełnia to postawiony przez Ciebie cel jaki ma spełniać ta metoda to raczej wszystko w porządku (osobiście nie widzę tylko tego celu :) ).

0

A jak wyglądała by pętla


Ocena dajZaliczonych(Ocena oc)
{
    if (oc.getNota() > 2.0)
    {
         return oc;
     }else{
     return null;
}}

gdyby zamiast samego oc chcieć wyrzucać listę nazwisk studentów, którzy zaliczyli kurs ? Chodzi o to aby metoda przeszła po całej liście zapisanych i wypisała tylko tych którzy zaliczyli przedmiot

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