Avatar billede charlie1986 Nybegynder
28. december 2010 - 16:40 Der er 5 kommentarer og
1 løsning

2 arrays der skal sammenlignens

Hej jeg sidder med et stort problem for mit vedkommende, jeg ikke rigtigt kan se en god løsning på.

Jeg er ved at lave et system hvor man skal kunne bestille en menu, som man selv sammen sætter. Man kan vælge vare til denne menu, hvor varene er opdelt i kategorier. Mængden af en pågældende vare skal beregnens ud fra hvor mange vare man har valgt til sin menu, fra en pågælende kategori.

Eks, der er valgt 3 slags kød. Den fastsatte mængde er 300 for kød, når man så vælger 3 slags kød skal systemet selv regne ud, at der skal 100 gram af hver slags kød.

Mit problem er så, at jeg har en menu hvor jeg kan trække et array ud, med hvor mange gange en kategori optræder i denne menu.
Jeg kan samtidigt trække et array ud med kategorier som jeg så kan sammen ligne med.

Jeg ville gerne at det kom til at fungere således.

Pesudokode:

For hver varekategori i en menu

tæl vare i kategori = antal

hent fastsatte mængde fra kategori, dividere med antal.

Dette kunne jeg godt få til at fungere hvis der kun var en varekategori i en menu, men da der er flere er det mit problem opstår.

Håber nogen kan hjælpe.

Er forresten til min hovedopgave på datamatiker studiet.
Avatar billede odsgaard Praktikant
28. december 2010 - 18:45 #1
Hej

Umiddelbart, så forestiller jeg mig, at du kan bruge et Composite-pattern til at løse dit problem.

http://www.javaworld.com/javaworld/jw-09-2002/jw-0913-designpatterns.html

Nu ved jeg ikke hvilke lærebøger i bruger, men i 'Head First Design Patterns' er det et eksempel på en implementation af Composite i en menu.

Håber det hjælper dig på vej - og god fornøjelse med opgaven.

Hilsen
Brian
Avatar billede arne_v Ekspert
28. december 2010 - 18:58 #2
Flere kategorier i en menu - er det ikke bare en løkke?
Avatar billede charlie1986 Nybegynder
28. december 2010 - 19:59 #3
Her er lidt kode der måske kan hjælpe lidt på det.

public class Vare {

    private int vareID;
    private String Navn;
    private String Description;
    private double Mængde;
    private String VareCategori;

    public Vare(int vareID, String navn, String description, String VareCategori)
    {
        this.vareID = vareID;
        this.Navn = navn;
        this.Description = description;
        this.Mængde = 0.0;
        this.VareCategori = VareCategori;
     
    }

public class VareCategori {

    private String CategoriNavn;
    private int mængde;
    private ArrayList<Vare> vareList;

   

    public VareCategori(String navn, int mængde)
    {
        this.CategoriNavn = navn;
        this.mængde = mængde;

    }

public class Menu {

    private String menuID;
    private int antal;
    private String note;
    private ArrayList<Vare> vare;
    private Vare v;

    public Menu(String menuID, int antal, String note)
    {
        this.menuID = menuID;
        this.antal = antal;
        this.note = note;
        vare = new ArrayList();

    }
public void AddVareMenu(Vare v)
    {
        vare.add(v);
    }

Der er selvfølgelig get og setter metoder.

Det hele arbejder op imod en MySQL database, hvor jeg har nogle mapper classer til at forbinde og udføre sql forespørelser, samt controller classer der arbejder sammen med guién.

det jeg så havde tænkt mig var at bruge denne metode

public ArrayList<String> getVareICategori(String menu)
    {


        ArrayList<Vare> varer = mm.getMenu2(menu); //henter alle vare i databasen for en specifik menu

        ArrayList<String> ccList = new ArrayList<String>();

        for ( Vare vare : varer )
        {
            ccList.add(vare.getVareCategori().toString());
        }

                return ccList;
    }

Denne metode henter alle vare kategorier der er oprette i databasen.

public ArrayList<VareCategori> getVareCatergori()
    {
        return vcm.getVareCategori();
    }

Min tanke er så at sammenligne de 2 arrays, dvs. at se hvor mange gange en varecategorig forefindes i en menu. og på den måde lave min beregning på hvor meget den faste mængde skal divideres ud. men kan ikke lige komme på en god løsning på dette.

Håber nogen kan hjælpe, og tak for de svar der allerede er kommet ?
Avatar billede odsgaard Praktikant
28. december 2010 - 20:55 #4
Noget i denne stil kan bruges til at tjekke listen over varekategorier i en menu for en given vareKategori. Så kan metoden kaldes i en løkke med samtlige varekategorier.

public int getAntalKategori(String vareKategori, Menu menu){
  ArrayList<String>vareKategorier = getVareCategori(menu);
 
  int result = 0;
  for(String s:vareKategorier){
    if(s.equals(vareKategori){
      result++;
    }
  }
  return result;
}

Hilsen
Brian
Avatar billede charlie1986 Nybegynder
29. december 2010 - 01:11 #5
Tusind tak for hjælpen brian, det satte lige nogle tanker igang og jeg fik det til at virke som det skulle..

smid lige et svar, så du kan få nogle points.
Avatar billede odsgaard Praktikant
29. december 2010 - 10:45 #6
Velbekom og hermed et svar :)
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