Trenger hjelp til å rettskrive metoder.

Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » tor 24.03.2011 14:25

Jeg sitter helt fast på noen metoder i noe jeg programmerer, håper derfor på hjelp her.
Programmet består av 4 klasser, legger for ordens skyld bare ved klassene som er aktuell for å løse problemene jeg har med metodene (Anmeldelse og Nettbutikk). Gi en lyd om jeg skal poste resten av klassene!

Det er klassen nedenfor, Avdeling som har et par metoder jeg håpte noen kunne hjulpet meg å rettskrive.
Metodene som inneholder feil er: public boolean innsettProdukt(Produkt produkt) {
og public int finnTotaltAntallAnmeldelser() {.

Kode: Merk alt
/** Klasse som representerer en avdeling. */
 class Avdeling {
   /** Navn pÃ¥ denne avdelingen */
   private String avdNavn;
   /** Tabell som inneholder produkter for denne avdelingen */
   private Produkt[] produkter;
   /** Antall produkter i denne avdelingen */
   private int antallProdukter;
   
   /**
    * Konstruktør for Ã¥ initialisere en avdeling.
    * @param avdNavn Navn pÃ¥ denne avdelingen.
    * @param maksAntallProdukter Maks antall produkter som kan tilhøre
    *        denne avdelingen. */
   public Avdeling(String avdNavn, int maksAntallProdukter) {
     //skriv kode for denne metoden
    this.avdNavn = avdNavn;
    this.antallProdukter = maksAntallProdukter;
   }
 
   /** @return navn pÃ¥ denne avdelingen. */
   public String hentAvdNavn() { return this.avdNavn; }
   /** @return antall produkter i denne avdelingen. */
   public int hentAntallProdukter() { return this.antallProdukter; }
 
   /**
    * @return totalt antall anmeldelser for alle produkter i denne avdelingen */
   public int finnTotaltAntallAnmeldelser() {
     // Skriv kode for denne metoden
    return antallNyttige + antallIkkeNyttige;
    }
   
   /** @return produkt angitt ved indeks, null dersom indeks er ulovlig
     * @param indeks Produkt angitt ved indeks i produkttabellen skal returneres */
   public Produkt hentProdukt(int indeks) {
     //skriv kode for denne metoden
     Produkt produkt = null;
     if (0 <= indeks && indeks <= antallProdukter)
       produkt = produkter[indeks];
     return produkt;
   }
   
   /** Finner indeks til angitt produkt i denne avdelingen.
    * @param produkt som indeks i produkttabellen skal finnes.
    * @return indeks til angitt produkt dersom det ble funnet, -1 ellers. */
   public int finnProduktIndeks(Produkt produkt) {
     return HjelpeKlasse.finnNøkkel(produkter, antallProdukter, produkt);
   }
 
   /**
    * Innsetter et produkt i produkttabellen, dersom (a) det er plass i
    * produkttabellen, (b) produkt ikke er null og (c) ikke finnes fra før
    * i produkttabellen.
    * @param produkt som skal forsøkes innsatt i produkttabellen.
    * @return true dersom angitt produkt ble innsatt, false ellers. */
   public boolean innsettProdukt(Produkt produkt) {
     // Skriv kode for denne metoden
    boolean ok = antallProdukter < maksAntallProdukter && produkt !=null;
    if (ok)
     produkter[antallProdukter++] = produkt;
    return ok;
   }
   
   
   /** Sammenligner to avdelinger for likhet. To avdelinger er like dersom de har samme navn.
    * @param obj den andre avdelingen som dette objektet skal sammenlignes med.
    * @return true dersom de to avdelingene er like, false ellers. */
   public boolean equals(Object obj) {
     if (this == obj) { return true; }
     if (!(obj instanceof Avdeling)) { return false; }
     Avdeling avdeling = (Avdeling) obj;
     return this.avdNavn.equals(avdeling.avdNavn);
   }
   
   /** @return Strengrepresentasjon av denne avdelingen pÃ¥ følgende format:
    * <avdelingsnavn> har <antall produkter> produkter som til sammen har fÃ¥tt
    *                     <totalt antall anmeldelser> anmeldelse(r).
    * Eksempel:
    * Avdelingen Bøker har 3 produkter som til sammen har fÃ¥tt 8 anmeldelse(r).
    */
   public String toString() {
     return String.format("Avdelingen %s har %d produkter som til sammen har fÃ¥tt %d anmeldelse(r).",
       this.avdNavn, this.antallProdukter, this.finnTotaltAntallAnmeldelser());
   }
 }




Klassen anmeldelse:
Kode: Merk alt
/** Klassen som representerer en anmeldelse. */
 public class Anmeldelse {
   /** Maks antall stjerner som en anmeldelse kan fÃ¥. */
   public final static int MAKS_ANTALL_STJERNER = 5;
   
   /** Produktet denne anmeldelsen gjelder. */
   private Produkt produkt;
   /** Tekst for anmeldelsen. */
   private String anmeldelseTekst;
   /** Antall stjerner som denne anmeldelsen har fÃ¥tt tildelt. */
   private int antallStjerner;
   /** Leser-stemmer som mener at denne anmeldelsen er nyttig.*/
   private int antallNyttige;
   /** Leser-stemmer som mener at denne anmeldelsen er ikke nyttig. */
   private int antallIkkeNyttige;
   
   /** Konstruktør for Ã¥ initialisere en anmeldelse.
    * @param produkt Produktet denne anmeldelsen gjelder.
    * @param anmeldelseTekst Tekst for anmeldelsen.
    * @param antallStjerner Antall stjerner tildelt denne anmeldelsen. */
   public Anmeldelse(Produkt produkt, String anmeldelseTekst, int antallStjerner) {
     this.produkt = produkt;
     this.anmeldelseTekst = anmeldelseTekst;
     this.antallStjerner = antallStjerner;
     this.antallNyttige = 0;
     this.antallIkkeNyttige = 0;
   }
   
   /** @return Produktet som denne anmeldelsen gjelder. */
   public Produkt hentProdukt() { return produkt; }
   /**@return Tekst for denne anmeldelsen. */
   public String hentAnmeldelseTekst() { return anmeldelseTekst; }
   /** @return Antall stjerner tildelt denne anmeldelsen. */
   public int hentAntallStjerner() { return antallStjerner; }
   /** @return Antall nyttige leser-stemmer for denne anmeldelsen. */
   public int hentAntallNyttige() { return antallNyttige; }
   /** @return Antall ikke-nyttige leser-stemmer for denne anmeldelsen. */
   public int hentAntallIkkeNyttige() { return antallIkkeNyttige; }
   
   /** Legger til angitt antall nyttige leser-stemmer.
     * @param antall Antall leser-stemmer som skal legges til nyttige
     *               stemmer for denne anmeldelsen. */ 
   public void leggTilNyttige(int antall) {
     this.antallNyttige += antall;
   }
   
   /** Legger til antall ikke-nyttige leser-stemmer.
    * @param antall Antall leser-stemmer som skal legges til ikke-nyttige
    *               stemmer for denne anmeldelsen. */ 
   public void leggTilIkkeNyttige(int antall) {
     this.antallIkkeNyttige += antall;
   }
   
   /**
     * Sammenligner to anmeldelser for likhet.
     * To anmeldelser er like dersom de (a) gjelder samme produkt, (b) har lik
     * anmeldelsestekst og (c) har fÃ¥tt likt antall stjerner.
     * @param obj den andre anmeldelsen
     * @return true dersom de to ameldelsene er like, false ellers. */
   public boolean equals(Object obj) {
     // Skriv kode for denne metoden??
    if (this == obj) { return true;  }
    if (!(obj instanceof Anmeldelse )) { return false; }
  return false;
   }
   
   /**
     * @return Strengrepresentasjon av denne anmeldelsen følgende format:
     *   <anmeldelsetekst> <streng med antall '*'> (Nyttige: <antall nyttige>,
     *   Ikke-nyttige: <antall ikke-nyttige>)
     * Eksempel: Knakende god! **** (Nyttige: 8, Ikke nyttige: 7) */
   public String toString() {
     //  Skriv kode for denne metoden ??
    return String.format("%s har %d anmeldelse(r): %-5s%n" +
         "  (Totalt antall   nyttige: %d, Totalt antall ikke-nyttige: %d)",
         this.anmeldelseTekst,
         this.antallStjerner,
         this.antallNyttige,
         this.antallIkkeNyttige);
   }
 }



og til slutt klassen Nettbutikk:
Kode: Merk alt
/** Klassen som representerer en forenklet nettbutikk. */
 public class Nettbutikk {
   public static void main(String[] args) {
     // Opprett en bokavdeling med 500 bøker
     Avdeling bokAvdeling = new Avdeling("Bøker", 500);
     init(bokAvdeling);
 
     System.out.println(bokAvdeling);
     System.out.println("OVERSIKT OVER PRODUKTER OG DERES ANMELDELSER I BOKAVDELINGEN:");
     for (int i = 0; i < bokAvdeling.hentAntallProdukter(); ++i) {
       Produkt produkt = bokAvdeling.hentProdukt(i);
       System.out.println(produkt);
       int antallAnmeldelser = produkt.hentAntallAnmeldelser();
       for (int j = 0; j < antallAnmeldelser; ++j) {
         Anmeldelse anmeldelse = produkt.hentAnmeldelse(j);
         System.out.println(anmeldelse);
       }
       System.out.println();
     }
 
     System.out.println("HISTORGRAM OVER ANTALL STJERNER-HYPPIGHET TIL "
                      + "ANMELDELSER FOR HVERT PRODUKT I BOKAVDELINGEN:");
     for (int i = 0; i < bokAvdeling.hentAntallProdukter(); ++i) {
       Produkt bok = bokAvdeling.hentProdukt(i);
       System.out.println(bok);
       bok.skrivHistogram();
       System.out.println();
     }
   }
   
   private static void init(Avdeling bokAvdeling) {
     // 1. bok med 5 anmeldelser
     Produkt bok = new Produkt("Java Jumpstart", bokAvdeling);
     bokAvdeling.innsettProdukt(bok);
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Grådig god. Løp og kjøp!", 5)); 
     Anmeldelse anmeldelse = bokAvdeling.hentProdukt(0).hentAnmeldelse(0);
     anmeldelse.leggTilNyttige(9);
     anmeldelse.leggTilIkkeNyttige(11);
     
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Knakende god!", 4)); 
     anmeldelse = bokAvdeling.hentProdukt(0).hentAnmeldelse(1);
     anmeldelse.leggTilIkkeNyttige(7);
     
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Spennende!", 4)); 
     anmeldelse = bokAvdeling.hentProdukt(0).hentAnmeldelse(2);
     anmeldelse.leggTilNyttige(8);
     anmeldelse.leggTilIkkeNyttige(6);   
     
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Anbefales!", 3)); 
     anmeldelse = bokAvdeling.hentProdukt(0).hentAnmeldelse(3);
     anmeldelse.leggTilNyttige(8);
     anmeldelse.leggTilIkkeNyttige(10);   
     
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Vanskelig men god bok.", 3)); 
     anmeldelse = bokAvdeling.hentProdukt(0).hentAnmeldelse(4);
     anmeldelse.leggTilNyttige(7);
     anmeldelse.leggTilIkkeNyttige(5);   
     
     // 2. bok med 2 anmeldelser
     bok = new Produkt("Java pÃ¥ 5 min.", bokAvdeling);
     bokAvdeling.innsettProdukt(bok);
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Styr unna!", 1)); 
     anmeldelse = bokAvdeling.hentProdukt(1).hentAnmeldelse(0);
     anmeldelse.leggTilNyttige(2);
     anmeldelse.leggTilIkkeNyttige(4);
     
     bok.innsettAnmeldelse(new Anmeldelse(bok, "Har ingen kodeeksempler!", 2));
     anmeldelse = bokAvdeling.hentProdukt(1).hentAnmeldelse(1);
     anmeldelse.leggTilNyttige(4);
     anmeldelse.leggTilIkkeNyttige(6);
     
     // 3. bok med 1 anmeldelse
     bok = new Produkt("Jambo Java", bokAvdeling);
     bokAvdeling.innsettProdukt(bok);
     bok.innsettAnmeldelse(new Anmeldelse(bok,"Den er jo på swahili! Kult!",5));
     anmeldelse = bokAvdeling.hentProdukt(2).hentAnmeldelse(0);
     anmeldelse.leggTilNyttige(3);
     anmeldelse.leggTilIkkeNyttige(7);
   }
 }




Håper det er noen som kan hjelpe meg! Takker på forhånd for svar!
medlem i 146 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav Soerboe » tor 24.03.2011 23:51

Prøv å være litt mer spesifikk da. Hva slags feil, hvordan skal det fungere, hva har du gjort/prøvd?

For alt vi vet er dette en lekse du har fått der du skal finne feil i metodene og at du dermed prøver å prakke på oss leksa di, og den gidder ikke jeg gjøre for deg. Men hjelpe deg kan jeg godt, hvis du tar litt initiativ selv.

Brukerens avatar
medlem i 186 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » fre 25.03.2011 13:12

Dere hadde nok ikke fått hele leksen min, da hadde ikke jeg lært noe.
Uansett, beklager for at jeg var så lite spesifikk.

Metoden som skal skrive ut hyppighetstabell/frekvenstabell virker som har feil ett eller annet sted, da jeg får feilmelding, på linjen metoden begynner.
Feilmeldingen er som følger : Exception in thread "main" java.lang.NullPointerException
at produkt.java:62)

Er det noe feil med denne metoden: ?
Kode: Merk alt
  public int[] lagAntallStjernerHyppighetsTab() {
    // TODO: Skriv kode for denne metoden
     int[] hyppighetsTabell = new int[5];
     for (int i = 0; i <= antallAnmeldelser; i++) {
        hyppighetsTabell [antallStjerner]
     }
    
     return hyppighetsTabell;
       
  }



Så får jeg feilmelding som følger: The method beregnGjennomsnittAntallStjerner(int) in the type Produkt is not applicable for the arguments (). Dette antar jeg er pga metoden som er postet under, siden antallStjerner blir returnert til den:
Kode: Merk alt
  public int beregnGjennomsnittAntallStjerner(int antallStjerner) {
     int gjennomsnitt = Math.round(antallStjerner / antallAnmeldelser);
     return gjennomsnitt;
   }

Siden det ikke går an å gjøre det på denne måten, antar jeg at jeg må ha en eller annen form for løkke for å finne antallStjerner og anmeldelser.
Men hvordan skriver jeg en slik løkke ?
medlem i 146 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav Soerboe » fre 25.03.2011 15:09

Hvis du poster Produkt.java også så er det litt enklere å finne ut hvor feilen ligger.

Men denne linja
Kode: Merk alt
hyppighetsTabell [antallStjerner]

er for det første ikke avsluttet med semikolon og for det andre gjør den ingenting. Kanskje det er dette du ønsker:
Kode: Merk alt
hyppighetsTabell[i] = antallStjerner;

Men da burde du endre linja over til
Kode: Merk alt
int[] hyppighetsTabell = new int[antallAnmeldelser];


I den andre metoden ser jeg ikke noe som er galt. Som sagt er det nok enklere hvis du poster Produkt.java også.

Brukerens avatar
medlem i 186 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » fre 25.03.2011 19:02

Takker for god tilbakemelding.

Jeg får forøvrig de samme feilmeldingene på klassene i den siste posten min.


Klassen produkt er som følger:



Kode: Merk alt
/** Klassen som representerer et produkt. */
public class Produkt {
  /** Maks antall anmeldelser som et produkt kan fÃ¥. */
  public final int MAKS_ANTALL_ANMELDELSER = 100;

  /** Navn pÃ¥ dette produktet. */
  private String prodNavn;
  /** Avdelingen dette produktet tilhører. */
  private Avdeling avdeling;
  /** Tabell som inneholder anmeldelser for dette produktet. */
  private Anmeldelse[] anmeldelser;
  /** Teller som angir hvor mange anmeldelser dette produktet har fÃ¥tt. */
  private int antallAnmeldelser;

  /** Konstruktør for Ã¥ initialisere et produkt.
   * @param prodNavn Navn pÃ¥ dette produktet.
   * @param avdeling Avdelingen dette produktet tilhører. */
  Produkt(String prodNavn, Avdeling avdeling) {
    this.prodNavn = prodNavn;
    this.avdeling = avdeling;
    this.anmeldelser = new Anmeldelse[MAKS_ANTALL_ANMELDELSER];
    this.antallAnmeldelser = 0;
  }

  /** @return Navn pÃ¥ produktet. */
  public String hentProduktNavn() { return prodNavn; }
  /** @return Avdelingen dette produktet tilhører. */
  public Avdeling hentAvdeling() { return avdeling; }
  /** @return Antall anmeldelser dette produktet har fÃ¥tt. */
  public int hentAntallAnmeldelser() { return antallAnmeldelser; }

  /**
   * @param indeks Anmeldelsen angitt ved indeks skal returneres.
   * @return anmeldelsen angitt ved indeks, null dersom indeks er ulovlig. */
  public Anmeldelse hentAnmeldelse(int indeks) {
    // TODO: Skriv kode for denne metoden
     Anmeldelse anmeldelse = null;
     if (0 <= indeks && indeks <= antallAnmeldelser)
        anmeldelse = anmeldelser [indeks];
     return anmeldelse;

  }

  /** Finner indeks til angitt anmeldelse i tabellen over anmeldelser.
   * @param anmeldelse Metoden finner indeks til denne anmeldelsen.
   * @return indeks til angitt anmeldelse dersom den finnes, -1 ellers. */
  public int finnAnmeldelseIndeks(Anmeldelse anmeldelse) {
    return HjelpeKlasse.finnNøkkel(anmeldelser, antallAnmeldelser, anmeldelse);
  }

  /** Innsetter angitt anmeldelse for dette produktet.
   * @param anmeldelse Anmeldelsen som skal settes inn.
   * @return true dersom anmeldelsen ble innsatt, false ellers.  */
  public boolean innsettAnmeldelse(Anmeldelse anmeldelse) {
    boolean ok = antallAnmeldelser < MAKS_ANTALL_ANMELDELSER && anmeldelse != null;
    if (ok)
      anmeldelser[antallAnmeldelser++] = anmeldelse;
    return ok;
  }

  /** @return Totalt antall nyttige stemmer som har blitt gitt til
   *          anmeldelsene for dette produktet. */
  public int beregnTotaltAntallNyttigeStemmer() {
    int antall = 0;
    for (int i = 0; i < antallAnmeldelser; ++i) {
      antall += anmeldelser[i].hentAntallNyttige();
    }
    return antall;
  }

  /**
   * @return Totalt antall ikke-nyttige stemmer som har blitt gitt til
   *         anmeldelsene for dette produktet. */
  public int beregnTotaltAntallIkkeNyttigeStemmer() {
    // TODO: Skriv kode for denne metoden
     int antall = 0;
     for (int i = 0; i < antallAnmeldelser; ++i) {
        antall += anmeldelser [i].hentAntallIkkeNyttige();
     }
     return antall;
     }


  /**
   * @return Gjennomsnitt antall stjerner tildelt dette produktet,
   *         avrundes til nærmeste heltall. */
  public int beregnGjennomsnittAntallStjerner(int antallStjerner) {
    // TODO: Skriv kode for denne metoden
     int gjennomsnitt = Math.round(antallStjerner / antallAnmeldelser);
     return gjennomsnitt;

   }




  /**
   * Lager en hyppighetstabell over antall stjerner-hyppighet til anmeldelser,
   * d.v.s. antall anmeldelser som fik   k 0, 1, 2, o.s.v. stjerner.
   * @return tabell med antall stjerner-hyppigheter */
  public int[] lagAntallStjernerHyppighetsTab() {
    // TODO: Skriv kode for denne metoden
     int[] hyppighetsTabell = new int[5];
     for (int i = 0; i <= antallAnmeldelser; i++) {
        hyppighetsTabell[i] = antallStjerner;
     }


     return hyppighetsTabell;

  }

  /**
   * Skriver histogram over antall stjerner-hyppighet til anmeldelser.
   * d.v.s. antall anmeldelser som fikk 5, 4, 3 o.s.v. stjerner.
   * Eksempel pÃ¥ histogram nedenfor viser at 1 anmeldelse til dette produktet
   * fikk 5 stjerner, 2 anmeldelser til dette produktet fikk 4 stjerner, og
   * 2 anmeldelser til dette produktet fikk 3 stjerner:
      Stjerner:       Antall anmeldelser
             5: +     (1)
             4: ++    (2)
             3: ++    (2)
             2:       (0)
             1:       (0)
             0:       (0)
   */
  public void skrivHistogram() {
    // TODO: Skriv kode for denne metoden
  }

  /** Sammenligner to produkter for likhet.
   * To produkter er like dersom de har samme navn og tilhører samme avdeling.
   * @param obj det andre produktet som dette objektet skal sammenlignes med.
   * @return true dersom de to produktene er like, false ellers. */
  public boolean equals(Object obj) {
    if (this == obj) { return true; }
    if (!(obj instanceof Produkt)) { return false; }
    Produkt produkt = (Produkt)obj;
    return this.prodNavn.equals(produkt.prodNavn) &&
           this.avdeling.equals(produkt.avdeling);
  }

  /** @return Strengrepresentasjon av dette produktet pÃ¥ følgende format:
   * <produkt navn> har <antall anmeldelser> anmeldelser:
   * <streng med gjennomsnitt antall '*'>
   *     (Totalt antall nyttige: <totalt antall nyttige>,
   *      Totalt antall ikke-nyttige: <totalt antall ikke-nyttige>).
   * Eksempel: Java pÃ¥ 5 min. har 2 anmeldelser: **
   * (Totalt antall nyttige: 6, Totalt antall ikke nyttige: 10) */
  public String toString() {
    return String.format("%s har %d anmeldelse(r): %-5s%n" +
      "  (Totalt antall nyttige: %d, Totalt antall ikke-nyttige: %d)",
      this.prodNavn,
      this.antallAnmeldelser,
      HjelpeKlasse.fyllStreng(this.beregnGjennomsnittAntallStjerner(), '*'),
      this.beregnTotaltAntallNyttigeStemmer(),
      this.beregnTotaltAntallIkkeNyttigeStemmer());
  }
}





Dersom du trenger noen av de andre klassene, skal alle være postet i den første posten.
medlem i 146 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav Soerboe » fre 25.03.2011 19:54

HjelpeKlasse.java hadde vært fint å få se litt på også :)

Ellers er feilen med beregnGjennomsnittAntallStjerner() at i linje 155 i Produkt.java så kaller du den uten argumenter, men den tar et heltall som argument.

Brukerens avatar
medlem i 186 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » fre 25.03.2011 19:57

Beklager så meget, her er hjelpeKlasse. Da skal alle kodene være pastet.
Kode: Merk alt
/** Klasse med nyttige metoder. */
public class HjelpeKlasse {
  /** Fyller en streng med et gitt tegn.
   * @param antallTegn Angir hvor mange tegn som skal være i strengen
   * @param tegn Angir tegn som strengen skal fylles med
   * @return streng fylt med angitt tegnet visst antall ganger. */
  public static String fyllStreng(int antallTegn, char tegn) {
    String fylleMed = Character.toString(tegn);
    String stjStr = "";
    for (int i = 0; i < antallTegn; ++i) {
      stjStr += fylleMed;
    }
    return stjStr;
  }
 
  /** Lineær søking etter en nøkkel.
   * @param tab      Tabellen det skal søkes i
   * @param antall   Antall elementer i tabellen
   * @param nøkkel   Verdi det skal søkes etter i tabellen
   * @return indeks i tabellen der nøkkel ble funnet, ellers -1. */
  public static int finnNøkkel(Object[] tab, int antall, Object nøkkel){
    int indeks = -1;
    for (int i = 0; i < antall; ++i) {
      if(tab[i].equals(nøkkel)) {
        indeks = i;
      }
    }
    return indeks;
  }
}


Hvordan kan jeg løse problemet med metoden ?
medlem i 146 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav Soerboe » fre 25.03.2011 20:28

Dette er de feilene jeg får nå:
Kode: Merk alt
Produkt.java:48: cannot find symbol
symbol  : method finnøkkel(Anmeldelse[],int,Anmeldelse)
location: class HjelpeKlasse
    return HjelpeKlasse.finnøkkel(anmeldelser, antallAnmeldelser, anmeldelse);
                       ^
Produkt.java:105: cannot find symbol
symbol  : variable antallStjerner
location: class Produkt
        hyppighetsTabell[i] = antallStjerner;
                              ^
Produkt.java:155: beregnGjennomsnittAntallStjerner(int) in Produkt cannot be applied to ()
      HjelpeKlasse.fyllStreng(this.beregnGjennomsnittAntallStjerner(), '*'),
                                  ^
Avdeling.java:30: cannot find symbol
symbol  : variable antallNyttige
location: class Avdeling
    return antallNyttige + antallIkkeNyttige;
           ^
Avdeling.java:30: cannot find symbol
symbol  : variable antallIkkeNyttige
location: class Avdeling
    return antallNyttige + antallIkkeNyttige;
                           ^
Avdeling.java:30: incompatible types
found   : java.lang.String
required: int
    return antallNyttige + antallIkkeNyttige;
                         ^
Avdeling.java:58: cannot find symbol
symbol  : variable maksAntallProdukter
location: class Avdeling
    boolean ok = antallProdukter < maksAntallProdukter && produkt !=null;
                                   ^
7 errors


Feilene:
1. Dette er bare en navningsfeil finnNøkkel(), ikke finnøkkel() ;)
2., 4., 5, 7.: Variabler som ikke finnes. De må du opprett og gi innhold til
3.: Her har du glemt å gi argumenter til beregnGjennomsnittAntallStjerner()
6. Igjen varibler som ikke finnes.

Det ser du som det er mange variabler og innhold i metodene som mangler her. Prøv å skrive metodene ferdig og se hvordan det ser ut da.

Brukerens avatar
medlem i 186 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » man 28.03.2011 1:15

Takker for gode tilbakemeldinger.

2. Variablene "finnes" men i en annen klasse (klassen Anmeldelse).
Hvordan kan jeg skrive en for - løkke som kan f.eks finne totalt antall anmelderser (nyttige + ikke nyttige?)
Her er det jeg har skrevet, men det fungerer overhode ikke

1.
Kode: Merk alt
public int finnTotaltAntallAnmeldelser() {
    int count++;
    for(String antallNyttige : Anmeldelse.antallIkkeNyttige) {
    count++;
    }
    int antall = count;
  }
return anmeldelse
}



2. så har vi følgende metode:
Kode: Merk alt
  public int[] lagAntallStjernerHyppighetsTab() {
    // TODO: Skriv kode for denne metoden
     int[] hyppighetsTabell = new int[5];
    
     for (int i = 0; i <= antallAnmeldelser; i++) {
        hyppighetsTabell[i] = antallStjerner;
     }


     return hyppighetsTabell;

  }

Den får en feilmelding pga: Cannot be resolved to a variable.
Tingen er at antallStjerner er i en annen klasse (Anmeldelse den også) hvordan "sender" jeg antallStjerner til hyppighetstabellen?
medlem i 146 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav Soerboe » man 28.03.2011 23:23

I begge to tilfellene du viser til her har du en array (liste) over henholdsvis produkter og anmeldelser i objekter som metodene du skal skrive er en del av. Du må derfor gå gjennom disse arrayene og telle opp det du skal telle opp.

Søk på google etter "java for loop" hvis du er usikker på hvordan du løper igjennom en array.

For å få tak i variablene som er lagret i de ulike klassene ser jeg at det er laget hent-metoder som du kan bruke. F.eks
Kode: Merk alt
anmeldelse1.hentAntallStjerner()


Et tips: les litt mer grunnleggende om klasser i java, så skjønner du mye mer av det du skal gjøre.

Brukerens avatar
medlem i 186 måneder
 

Re: Trenger hjelp til å rettskrive metoder.

Innleggav 1337 » fre 01.04.2011 12:27

Takker for tilbakemeldingen. Fikk programmet til å fungere til slutt!
medlem i 146 måneder
 


Returner til Java



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron