Avatar billede changelevel Nybegynder
30. januar 2012 - 20:52 Der er 16 kommentarer og
1 løsning

ArrayList

Hej, får problemer med arrayList..
Får nulpoint igen..irriterende.!!

inden jeg lægge kode op, vil spørge først om der er nogle her som vil kigge på det?
Avatar billede arne_v Ekspert
30. januar 2012 - 20:53 #1
Der er stort set altid nogen som kigger paa problemer der postes.
Avatar billede arne_v Ekspert
30. januar 2012 - 20:54 #2
Med hensyn til en NullPointerException saa find den linie hvori det sker og find ud af hvorfor en ref er null.
Avatar billede changelevel Nybegynder
30. januar 2012 - 22:09 #3
private ArrayList<DrikkeVarer>drikkeList;
private ArrayList<Menu>menuList;

drikkeList = new ArrayList<DrikkeVarer>();
menuList = new ArrayList<Menu>();


public String vælgDrikkeVarer(int valg){

    String res = "";

    for (int i = 0; i < drikkeList.size(); i++) {
            if(valg == drikkeList.get(i).getNr()){               
            res = res + drikkeList.get(i).toString();
                System.out.println(res);
            }
        }

        return res;
    }

public String vælgMenu(int valg){

        String res = "";

    for (int i = 0; i < menuList.size(); i++) {
        if(valg == menuList.get(i).getNr()){               
            res = res + menuList.get(i).toString();
                System.out.println(res);
            }

        }
        return res;
    }


// Her manger jeg en metode hvor jeg skal regne det valgte drikkeVarer og Menuers priser sammen via hjælp af ArrayList.

Nogle kan give mig ide hvad kan jeg gøre... har selv prøvet mange mange forskellige metoder.. men får syntax fejl...

Den sum som, jeg regner ud, skal gemmes igen inden i anden arrayList, som skal printes ud senere. dvs. dagens omsætningen i alt.
Avatar billede arne_v Ekspert
30. januar 2012 - 23:28 #4
Hvor er den NullPointerException??
Avatar billede arne_v Ekspert
30. januar 2012 - 23:29 #5
pris skal vel akkumuleres for baade drikkevarer og menuer
Avatar billede changelevel Nybegynder
30. januar 2012 - 23:51 #6
sorry, havde glemt at fortælle jeg har fundet den nulpoint.

Jeg har lavet en ny attributter som hedder sumPris, og en metode der hedder sum();
Men jeg får en forkert udregning :S  :(
kan du se hvor fejlen lægger?



private ArrayList<DrikkeVarer>drikkeList;
private ArrayList<Menu>menuList;

drikkeList = new ArrayList<DrikkeVarer>();
menuList = new ArrayList<Menu>();

private double sumPris;

public String vælgDrikkeVarer(int valg){

    String res = "";

    for (int i = 0; i < drikkeList.size(); i++) {

            if(valg == drikkeList.get(i).getNr()){               
            res = res + drikkeList.get(i).toString();

                System.out.println(res);
        sumPris =+ valg;
            }
        }

        return res;
    }

public String vælgMenu(int valg){


        String res = "";


    for (int i = 0; i < menuList.size(); i++) {
        if(valg == menuList.get(i).getNr()){               
            res = res + menuList.get(i).toString();
                System.out.println(res);
            }
            sumPris += sum + valg;
        }
        return res;
    }
       
  public void sum(){

        System.out.println(sumPris);
       
    }
Avatar billede changelevel Nybegynder
30. januar 2012 - 23:54 #7
sorry sorry... har selv fundet fejlen igen....
Avatar billede changelevel Nybegynder
30. januar 2012 - 23:55 #8
priser kan godt lægge sammen nu :D
Avatar billede arne_v Ekspert
31. januar 2012 - 00:50 #9
godt

:-)
Avatar billede changelevel Nybegynder
01. februar 2012 - 00:20 #10
får en ny problem..


public String vælgMenu(int valg){

        String res = "";

    for (int i = 0; i < menuList.size(); i++) {
        if(valg == menuList.get(i).getNr()){               
            res = res + menuList.get(i).toString();
                System.out.println(res);
            }
            sumPris += sum + valg;
        }
        return res;
    }


hvis nu jeg vil have den ovenståede metode til at kunne indtage antal af bestemt menuer, hvordan skal jeg kode det? f.eks. i:
public static void main(String[] args) {
    KasseApparat k = new KasseApparat();       
        k.vælgMenu(2*24);

når jeg har skrvet i parameter 2*24, vil jeg gerne have at den
lægger 2 gange af 24's priser sammen.
}
Avatar billede poloen Nybegynder
05. februar 2012 - 20:43 #11
Jeg kan ikke se noget problem, i at KasseApparatet ikke skulle kunne tage imod det argument.
Prøv at se hvilket argument dit KasseApparat tager imod.
Avatar billede Nasgul Nybegynder
06. februar 2012 - 12:17 #12
Du kunne evt. dele dine parametre op til noget i stil med dette:

public int vælgMenu(int antal, int menuNummer){

    for (Menu m : menuList) {
        if (m.getNr() == menuNummer) {
            return m.getPris() * antal;
        }
    }
}

public static void Main(String[] args) {
    KasseApperat k = new KasseApperat();

    int samletPris = k.vælgMenu(2, 24);

    System.out.println("Samlet pris for: 2 * nr. 24 = " + samletPris);
}
Avatar billede changelevel Nybegynder
08. februar 2012 - 12:37 #13
hvad er forskellen mellem foreach løkke og forløkke?

    for (int i = 0; i < menuList.size(); i++) {
        if(valg == menuList.get(i).getNr()){               
            res = res + menuList.get(i).toString();
                System.out.println(res);
            }

  for (Menu m : menuList) {
        if (m.getNr() == menuNummer) {
            return m.getPris() * antal;
        }
Avatar billede Nasgul Nybegynder
08. februar 2012 - 14:40 #14
Personligt kan jeg bedst lide enhanced for løkke, da jeg synes den er mere overskuelig.

Men kig lidt på dem her:

http://www.eksperten.dk/guide/167

http://blogs.oracle.com/CoreJavaTechTips/entry/using_enhanced_for_loops_with

De kan nok forklare det bedre end jeg kan.
Avatar billede changelevel Nybegynder
16. marts 2012 - 09:46 #15
s
Avatar billede changelevel Nybegynder
16. marts 2012 - 09:47 #16
arne_v
Avatar billede changelevel Nybegynder
16. marts 2012 - 09:48 #17
d
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester