» »

Java razredi, konstruktorji. Pomoč

Java razredi, konstruktorji. Pomoč

uro1001 ::

Pozdravljeni

Rešujem neko nalogo z razredi in konstruktorji in sem prišel do naslednje težave. Namreč nevem kako izdelati metodo da bo izpisala avtorje. Trenutno izpisujem tabelo, vendar mi izpiše naslov pomnilnika. Konstruktor v razredu Author mora biti prazen, sedaj pa nevem kako izpisati podatke o avtorju.

amacar ::

Metoda ti more vrniti avtorje, torej vrneš
return authors;


V classu Author narediš neko metodo (recimo overridaš toString()), ki ti vrne name + email + gender.

Izpišeš jih pa tako da v loopu kličeš to metodo nad posameznim primerkom avtorja.
authors[i].toString();

uro1001 ::

metodo sem že naredil ki mi vrne tabelo authors, in nato v zanki to tabelo izpisujem. Torej moram narediti le še metodo toString za izpis podatkov, da nebo izpisovalo pomnilniškega naslova. Sem pa pozabil dodati, da imam 3 razrede, eden je testni drug razred so avtorji in eden so knjige. Po sodeči sliki, bi morala biti metoda toString() v razredu Book.

Zgodovina sprememb…

  • spremenil: uro1001 ()

uro1001 ::

Sem pa pozabil dodati, da imam 3 razrede, eden je testni drug razred so avtorji in eden so knjige. Tako imam v razredu metodo toString in v to metodo moram vrniti spremenljivke iz razredaAuthor in nato izpisat.

amacar ::

toString v Book bo verjetno izpisal vse podatke o knjigi, naslov, ceno, avtorje, količino itd...
toString v Author pa le podatke o enem avtorju, ime, email, spol

uro1001 ::

Kako pa potem to metodo pokličem v razredu Book, kjer tudi izpisujem

amacar ::

authors[i].toString

bo klical metodo iz avtorja

uro1001 ::

poskusil sem, vendar mi javi napako NullPointerException

amacar ::

Verjetno ker imaš polje authors veliko 5 elementov. Izpisati jih moreš le toliko kot jih je resnično v polju, torej do numAuthors

uro1001 ::

Sedaj napaka ni več, vendar mi vrne null.

Sedaj sem v konstruktorju dodal vrednosti in deluje, čerpav nevem če je pravilno, glede na graf na sliki.

Zgodovina sprememb…

  • spremenil: uro1001 ()

amacar ::

Sodeč po sliki avtor res nima nobene metode, potem pač pač dostopaš direkt do spremenljivk, pa izpisuješ
authors[i].name + authors[i].gender...

<b>klima</b> ::

public class Author {

	private String name;
	private String email;
	private char gender;
	
	@Override
	public String toString() {
		return "Name: " + emptyIfNull(name) + 
			"Email: " + emptyIfNull(email) +
			"Gender: " + Character.toString(gender);
	}
	
	private String emptyIfNull(String str) {
		return str == null ? "" : str;
	}
}


public class Book {

	private Author[] authors = new Author[5];
	
	private int numAuthors = 0;
	
	public void addAuthor(Author author) {
		authors[numAuthors] = author;
		numAuthors++;
	}
	
	@Override
	public String toString() {
		String str = "";
		for(int i=0; i<numAuthors; i++) {
			str += authors[i].toString() + " ";
		}
		return str;
	}
	
}


Je bilo takole mišljeno? Upam da skompajla, sem namreč direkt iz beležnice skopiral :)

uro1001 ::

Razred Author mora biti prazen, brez metod. Potem pa so v razredu Book metode addAuthor, printAuthor in getAuthor.

uro1001 ::

Tvoja koda dela sem probal. Vendar mi vrne null, brez podatkov, ker nimam konstruktorja v razredu Author.

AnriK ::

Potem kako pa zgleda tvoj glavni program? Če imaš same default konstruktor za avtorja potem more zgledat nekako takole:

...
Book b = new Book("Knjiga", 10.0);
Author a = new Author();
a.name = "Ime";
a.email = "a@g.c";
a.gender = 'm';
b.addAuthor(a);
...


V debato da tu kršimo precej principov objektnega programiranja se ne bom spuščal. :)

Zgodovina sprememb…

  • spremenil: AnriK ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

problemi z javo

Oddelek: Programiranje
61122 (727) MrStein
»

[Android] Nov tip shranjevanja slike

Oddelek: Programiranje
142188 (1312) urosz
»

[Java] Objekt poslan k metodi v kakšnem stanju?

Oddelek: Programiranje
211554 (1001) shadeX
»

Java Objekti

Oddelek: Programiranje
102252 (1946) Mavrik
»

Java - sortiranje 2D tabele

Oddelek: Programiranje
61717 (1666) SkIDiver

Več podobnih tem