vežbam zadatke iz jave, pa sam naleteo na jedan koji ne mogu da rešim kako treba:
Zadatak glasi: Osoba ima ime i prezime kao i godine starosti. Može se ispitati da li je osoba starija od druge osobe i da se ispiše u formatu ime i prezime(godina). Imenik sadrži niz osoba (podrazumevano 10). Stvara se prazan, osobe se dodaju na određeno mesto. Ako je mesto popunjeno, prikazuje se poruka. Mogu se sortirati osobe po starosti (kriterijum se ostavlja studentu). Potrebno je ispisati imenik sa osobama tako da se osoba ispisuje jedna ispod druge.
E, sad, ja sam napravio klasu Osoba sa sledećim kodom:
public class Osoba {
private String ime_prezime;
private int godine;
public Osoba(String ip, int god){
ime_prezime=ip;
godine=god;
}
public String ime_prezime(){
return ime_prezime;
}
public int godine(){
return godine;
}
public static void sortiranjeGodine(Osoba[] niz) {
for(int i = 0; i < niz.length-1; i++)
for(int j = i+1; j < niz.length; j++)
if(niz[i] != null && niz[j]!=null && niz[i].godine < niz[j].godine)
{ Osoba temp = niz[i];
niz[i] = niz[j];
niz[j] = temp; }
}
public String toString(){
return ime_prezime + "(" + godine + ")";
}
}
Kao i klasu Imenik:
public class Imenik {
private Osoba[] osobe;
public Osoba[] osobe(){
return osobe;
}
public void unesiOsobu(Osoba o) {
for(int i = 0; i < osobe.length; i++) {
if(osobe[i] == null) {
osobe[i] = o; return; }
} System.out.println("Nije moguce uneti osobu!"); }
public String toString(){
String s="Osobe u imeniku: " + "\n";
for(int i=0;i<osobe.length;i++){
if(osobe[i]!=null){
s+=osobe[i] + "\n";
}
}
return s;
}
}
U main-u sam dodao sledeći kod:
public class Main {
public static void main(String[] args) {
Imenik[] im = new Imenik[10];
im[0].unesiOsobu(new Osoba("Pera Peric", 22));
im[1].unesiOsobu(new Osoba("Mile Milic", 25));
im[2].unesiOsobu(new Osoba("Zika Zikic", 27));
im[3].unesiOsobu(new Osoba("Jova Jovic", 35));
im[4].unesiOsobu(new Osoba("Janko Jankovic", 29));
im[5].unesiOsobu(new Osoba("Mica Micic", 19));
im[6].unesiOsobu(new Osoba("Kosta Kostic", 18));
System.out.println("Osobe u imeniku: ");
for(int i = 0; i < im.length; i++) {
System.out.println(im[i]); }
}
}
Ali kao rezultat dobijam grešku: Exception in thread "main" java.lang.NullPointerException...
Kad uradim u main-u sa ArrayList-om, ispisuje mi se sve kako treba (doduše nesortirano), ali ja bih voleo da mi neko objasni kako da dobijem odgovarajući rezultat korišćenjem običnog niza.
Molim ako neko ima vremena da mi objasni gde grešim i kako bih mogao da rešim problem...Dakle, ne treba mi gotov kod, nego ako može objašnjenje.
Hvala svima unapred