Jeg får NullPointerException uanset om jeg bruger den loekke eller ej...?
Exception in thread "main" java.lang.NullPointerException at dk.knord.DrikkeVarer.opretteDrikkeVarer(DrikkeVarer.java:29) at dk.knord.DrikkeVarer.<init>(DrikkeVarer.java:14) at dk.knord.DrikkeVarer.main(DrikkeVarer.java:55)
jeg havde også regne med at have adskilt DrikkeVare og DrikkeVareList og udvider programmet... men vil bare lige afprøve metoder om de overhovedet virker med loekke
1: Hvorfor når du adder på din lister skriver du 1,a og 2,b istedet for bare list.add(a) og list.add(b)
Som også nævn før, så ville jeg lave 2 klasser istedet for at samle det hele i en.
Drikkevare - Til at have alt for den enkelte drink Drikkevarer - Til alt det med listen at gøre
dvs Drikkevarer indholder en masse Drikkevare.
Derudover laver du en For løkke uden at bruge den?
for (int i = 0; i < drikkeList.size(); i++) { sum = sum + drikkeList.get(i).pris; }
Jeg ville kun have 1 linie inde i forløkken. Fordi ellers ville du få forkert sum for den bliver jo kørt ligeså mange gange som du har items i listen.
-----FEJLEN------
der hvor du får fejlen er nok: res = "du har købt følgende"+ navn + "og nr er" + nr + "og den koster" + pris;
du har ingen steder noget der hedder #navn# eller #nr#. Hvorfor er de tomme spørger du nok?
det er fordi du kalder metoden på
DrikkeVarer d = new DrikkeVarer();
som er i din main metode.
og ingen steder giver du d nogen værdier. Så den er bare tom. igen her en god grund for at dele det lidt op.
den kan ikke finde din cola og sprite du har lavet. For de er ikke i Drikkevarer, men i Drikkevarer arraylist.
dvs hvis du vil have dem ud, så skal du have din #res# ind i for løkken, så den ser sådan her ud:
for (int i = 0; i < drikkeList.size(); i++) {
sum = sum + drikkeList.get(i).pris; res = res+"du har købt følgende"+ drikkeList.get(i).navn + "og nr er" + drikkeList.get(i).nr + "og den koster" + drikkeList.get(i).pris;
}
også til sidst skal du returne det rigtige. så istedet at return res + sum; skal du nu barae return res;
håber det hjalp lidt :D der er nok at give sig i kast med.
du har lavet 2 constructor 1 som tager imod: String nav, int nr, double pris 1 som tager imod: intet
public DrikkeVarer(String navn, int nr, double pris){
this.navn = navn; this.nr = nr; this.drikkeList = new ArrayList();
}
public DrikkeVarer(){
opretteDrikkeVarer(); }
dvs du kan sige: DrikkeVarer drik = new DrikkeVarer(); i denne bliver ingen værdier sat og du får ikke lavet en Arraylist. Derfor du får exception eller DrikkeVarer drik = new DrikkeVarer("navn", 5, 13) Heri sætter du alle dine værdier og denne construktor burde virke med de kode ændringer jeg skrev tidligere.
hvis du kigger i din public static void main(String[] args) {
DrikkeVarer d = new DrikkeVarer(); d.toString();
} så kan du se at du bruger din tomme DrikkeVarer(); dvs når du kalder din d.toString(); kan den ikke finde nogen værdier fordi den ikke er sat til noget endnu.
hvis du har flere spørgsmål er du velkommen til at tilføje mig på MSN: LT_BLACK_MAGIC@HOTMAIL.COM eller skriv til JoshMXRyder@Gmail.com så svarer jeg nok lidt hurtigere :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.