Avatar billede missmalik Nybegynder
01. november 2004 - 13:19 Der er 20 kommentarer

problemer med java(Arraylist)

Hej, jeg er en nybegynder med hensyn til java...
Jeg har siddet med denne øvelse, hvor jeg skal bestemme
hvor mange medlemer af en club som meldte sig ind i en given måned, hvor efter jeg skal printe til skærmen, hvor mange medlemmer som der var i din given måned...

Jeg har prøvet mange alternativer,, if- sætninger, if sætning med while løkker etc etc....




    public void  joinedInMonth(int month)
    {
       
        if(month > 1 && month > 12){
            System.out.println(" this is not a valid month" + month);
       
        }
          else if(month > membership.size()){
              membership.get(month);
              System.out.println(membership.get(month));
             
      }}

dette er det sidste forsøg....
Avatar billede arne_v Ekspert
01. november 2004 - 13:22 #1
if(month < 1 && month > 12){
Avatar billede arne_v Ekspert
01. november 2004 - 13:23 #2
Umiddelbart vil jeg tro at du skal lave et array med 2 elementer, løbe din arraylist
membership igennem og tælle den rigtige måned op for hvert medlem.
Avatar billede missmalik Nybegynder
01. november 2004 - 13:26 #3
jeg er ikke helt med
Avatar billede arne_v Ekspert
01. november 2004 - 13:33 #4
Det første var bare en rettelse til dit test på valid måned.
Avatar billede arne_v Ekspert
01. november 2004 - 13:35 #5
det andet var et forslag til hvpordan du kunne tæll eop for alle måneder.

Men måske vil du kun tælle op for en enkelt måned. Så vil det være noget a la:

int antal = 0;
for(int i = 0; i < liste.size(); i++) {
    Medlem m = (Medlem)liste.get(i);
    if(m.getMonth() == month) {
        antal++;
    }
}
Avatar billede missmalik Nybegynder
01. november 2004 - 13:55 #6
jeg har gjort præcis som du siger, bare med en while løkke men så siger bluej, at indexoutoboundsexception.... dette fatter jeg ikke en brik af
Avatar billede missmalik Nybegynder
01. november 2004 - 14:01 #7
det er selvfølgelig også svært når man ikke har hele koden, og alle de andre metoder, men jeg har prøvet at gøre det sådan, men den siger stadigvk fejl

/**
    * determine the number of members who joined in the given month.
    * @param month the month we are interested in
    * @return the number of memebers.
    */
   
   
    public void  joinedInMonth(int month)
    {
       
        if(month > 1 && month > 12){
            System.out.println(" this is not a valid month" + month);
       
        }
          else if(month == membership.get(month)){
              membership.get(month);
              System.out.println(membership.get(month));
             
      }}


på forhånd tak
Avatar billede arne_v Ekspert
01. november 2004 - 14:02 #8
Må vi lige se koden til den while løkke ?
Avatar billede missmalik Nybegynder
01. november 2004 - 14:03 #9
øhhh, den har jeg slette, for den var ikke rigtig.... lige nu sidde jeg og gætter frem og tilbage for jeg er gået klod over hvordan jeg skal gribe den an
Avatar billede arne_v Ekspert
01. november 2004 - 14:04 #10
prøv med den for løkke så
Avatar billede missmalik Nybegynder
01. november 2004 - 14:05 #11
jeg prøver, men det er lidt svært for jeg ikke har lært om for løkke endnu :o)
Avatar billede missmalik Nybegynder
01. november 2004 - 14:21 #12
jeg har lavet for løkken, men den returnere måneden og ikke hvormange medlemmer, som blev medlem i den givne måned

else {
          int index = 0;
          for(int i = 0; i < membership.size(); i++) {
            if( month == ((Membership)membership.get(i)).getMonth());
            System.ou.println("bal bla" + ((Membership)membership.get(i)).getMonth());
                  index++;
Avatar billede arne_v Ekspert
01. november 2004 - 14:28 #13
Du skal lave:

int antal = 0;
for(int i = 0; i < membership.size(); i++) {
    if( month == ((Membership)membership.get(i)).getMonth()) {
      antal++;
    }
}
System.out.println("bal bla" + antal);
Avatar billede missmalik Nybegynder
01. november 2004 - 15:59 #14
hey .... vis jeg nu istedet gerne vil fjerne disse medlemer, og derefter addere dem til et nyt array, gøre jeg følgende:

public ArrayList purge(int month)                                                   
    {
        {
        if (month <= 0 && month >= 12){
            System.out.println("Error"+month+" this is not a valid month");
        }
        else {
            int index=0;
            while(index < membership.size()){
              if(month ==((Membership)membership.remove(index)).getMonth()){
                    index++;
                  System.out.println(membership.remove(index));
                   
         
         
         
        }}}

men det vil compileren ikke, ved du evt hvor  fejlen lægger
Avatar billede arne_v Ekspert
01. november 2004 - 16:49 #15
for(int i = 0; i < membership.size(); i++) {
    if( month == ((Membership)membership.get(i)).getMonth()) {
        othermembership.add(membership.remove(i));
    }
}

vil jeg tro
Avatar billede arne_v Ekspert
01. november 2004 - 16:50 #16
Testet er iøvrigt stadigt forkert

      if (month <= 0 || month >= 12){
            System.out.println("Error"+month+" this is not a valid month");
        }
Avatar billede arne_v Ekspert
01. november 2004 - 16:50 #17
Fjerde forsøg:

    if (month <= 0 || month >= 13){
            System.out.println("Error"+month+" this is not a valid month");
        }
Avatar billede arne_v Ekspert
01. november 2004 - 16:50 #18
og et svar
Avatar billede missmalik Nybegynder
01. november 2004 - 20:32 #19
tak for hjælpen arne....

du er bare min helt :)
Avatar billede arne_v Ekspert
21. november 2004 - 20:39 #20
så mangler du bare at acceptere svaret
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