Avatar billede chr.kj Nybegynder
03. november 2007 - 18:21 Der er 16 kommentarer og
1 løsning

Udregning af 2 variabler.

Hejsa.

Jeg er ny til Java og har ikke den store erfaring med det, derfor må I bære over med mig hvis det er alt for indlysende, men jeg er simpelthen løbet tør for idéer.

Jeg skal udregne resultatet af 2 variabler og udskrive resultatet i en ArrayList.

Koden ser sådan ud:

/*
* Postbud.java
*
* Created on 1. november 2007, 14:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package opgave2;

/**
*
* @author Administrator
*/
public class Postbud extends Ansatte {
   
    private int antalTimer = -1;
    private float timeløn = -1;
    private float Udbetaling = -1;
   
    /** Creates a new instance of Postbud */
    public Postbud() {
        super();
    }
   
    public Postbud( String titel, String fornavn, String efternavn, String cprNummer, int fødselsår, int ansættelsesår, int antalTimer, float timeløn ) {
        super( titel, fornavn, efternavn, cprNummer, fødselsår, ansættelsesår );
        setAntalTimer( antalTimer );
        setTimeløn( timeløn );
        //setPostbudeUdbetaling( postbudeUdbetaling );
    }

    public int getAntalTimer() {
        return antalTimer;
    }

    public void setAntalTimer(int antalTimer) {
        this.antalTimer = antalTimer;
    }

    public float getTimeløn() {
        return timeløn;
    }

    public void setTimeløn(float timeløn) {
        this.timeløn = timeløn;
    }
   
    public float PostbudeUdbetaling() {
        Udbetaling = antalTimer * timeløn;
        return Udbetaling;
    }

   
    //public void setPostbudeUdbetaling(float postbudeUdbetaling) {
    //    this.postbudeUdbetaling = postbudeUdbetaling;
    //}
   
    //public float postbudeUdbetaling() {
        //float postbudeUdbetaling = 0;
      //  postbudeUdbetaling = antalTimer * timeløn;
    //    return postbudeUdbetaling;
    //}
   
    public String toString() {
        return super.toString() + "\n Arbejdet antal timer: " + antalTimer + " á pr. time kr.: " + timeløn + "\n Til udbetaling " + Udbetaling + "\n\n";
    }
   
}

Det er variablen Udbetaling jeg er interesseret i at få udregnet. Udbetaling er resultatet af antalTimer * timeløn men når jeg "køre" min main får jeg resultatet -1 som jeg har sat som "default" i public float udbetaling.

Jeg har selv forsøgt med :

    }
   
    public float PostbudeUdbetaling() {
        Udbetaling = antalTimer * timeløn;
        return Udbetaling;
    }

osv, desværre uden held.

Jeg kan simpelthen ikke se hvorfor den ikke udskriver resultatet og håber derfor at der er nogle af jer der kan svare mig på det, også gerne med en beskrivelse af hvad jeg har gjort forkert og hvad jeres kode gør.

Som I kan se har jeg prøvet forskellige ting (de er "deaktiveret" med // ).

Håber I kan forså mit problem ellers skriv :o)

På forhånd tak for hjælpen.
Avatar billede nielle Nybegynder
03. november 2007 - 18:38 #1
Hvad med at helt droppe at have variablen i din klasse? Den bliver jo alligevel altid udregnet på baggrund af to andre.

I stedet kan du have denne kode:

    public float PostbudeUdbetaling() {
        float Udbetaling = antalTimer * timeløn;
        return Udbetaling;
    }

eller bare:

    public float PostbudeUdbetaling() {
        return antalTimer * timeløn;
    }
Avatar billede chr.kj Nybegynder
03. november 2007 - 18:44 #2
Hej og tak for hurtigt svar :o)

Syntes jeg har forsøgt det, men har prøvet det igen. Den kommer med en fejlmeddelse om at den ikke kan finde variablen postbudeUdbetaling i min toString()
Avatar billede nielle Nybegynder
03. november 2007 - 19:01 #3
Er det med stort eller lille 'P' i starten?
Avatar billede chr.kj Nybegynder
03. november 2007 - 21:05 #4
Det er med lille, men jeg har prøvet med både lille og stort for at kontrollere om det var der fejlen lå.
Avatar billede nielle Nybegynder
03. november 2007 - 21:35 #5
Din klasse indeholder ikke nogen variabel som hedder postbudeUdbetaling så det er fint nok at den brokker sig hvis du forsaøger at bruge den. Men umiddelbart har du ikke postet noget kode hvor du bruger den henne?
Avatar billede chr.kj Nybegynder
03. november 2007 - 22:46 #6
Jeg udskriver/bruger min toString() i klassen main, hvor jeg bla. indtaster mine postbude i en ArrayList. Er det det du mener med koden hvor jeg bruger den henne?
Avatar billede nielle Nybegynder
03. november 2007 - 22:54 #7
Prøv at vise den.
Avatar billede nielle Nybegynder
03. november 2007 - 22:58 #8
Din toString() skal i hvert fald rettes til:

    public String toString() {
        return super.toString() + "\n Arbejdet antal timer: " + antalTimer + " á pr. time kr.: " + timeløn + "\n Til udbetaling " + PostbudeUdbetaling() + "\n\n";
    }

men det passer ikke helt med fejlbeskeden fra 03/11-2007 18:44:04, eller hvad?
Avatar billede chr.kj Nybegynder
04. november 2007 - 14:11 #9
Det virker nu :o) - Det var efter jeg havde rettet min toString:

+ PostbudeUdbetaling + "\n\n"

til

+ PostbudeUdbetaling() + "\n\n"


Koden jeg brugte i min klasse, var den kode du oplyste mig om i dit svar d. 03/11-2007 18:38:20

public float PostbudeUdbetaling() {
        return antalTimer * timeløn;
    }

Kan du fortælle mig hvorfor eller hvad forskellen er på + PostbudeUdbetaling() + og + PostbudeUdbetaling + ?? - Det ville være en mega hjælp hvis du kunne forklare hvad forskellen er :o)

Anyways - Smid et svar så du kan få dine point :o)

Takker for hjælpen.
Avatar billede chr.kj Nybegynder
04. november 2007 - 14:21 #10
Til andre, så ser den endelig klasse sådan ud:

/*
* Postbud.java
*
* Created on 1. november 2007, 14:13
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/

package opgave2;

/**
*
* @author Administrator
*/
public class Postbud extends Ansatte {
   
    private int antalTimer = -1;
    private float timeløn = -1;
   
    /** Creates a new instance of Postbud */
    public Postbud() {
        super();
    }
   
    public Postbud( String titel, String fornavn, String efternavn, String cprNummer, int fødselsår, int ansættelsesår, int antalTimer, float timeløn ) {
        super( titel, fornavn, efternavn, cprNummer, fødselsår, ansættelsesår );
        setAntalTimer( antalTimer );
        setTimeløn( timeløn );
    }

    public int getAntalTimer() {
        return antalTimer;
    }

    public void setAntalTimer(int antalTimer) {
        this.antalTimer = antalTimer;
    }

    public float getTimeløn() {
        return timeløn;
    }

    public void setTimeløn(float timeløn) {
        this.timeløn = timeløn;
    }
   
    public float PostbudeUdbetaling() {
        return antalTimer * timeløn;
    }
   
    public String toString() {
        return super.toString() + "\n Arbejdet antal timer: " + antalTimer + " á pr. time kr.: " + timeløn + "\n Til udbetaling " + PostbudeUdbetaling() + "\n\n";
    }
   
}
Avatar billede nielle Nybegynder
04. november 2007 - 14:22 #11
Forskellen er om "PostbudeUdbetaling" henviser til en funktion eller en variabel i din klasse.
Avatar billede nielle Nybegynder
04. november 2007 - 14:23 #12
I øvrig er Java case-sensitiv; der er altså også forskel på om du skriver:

... + PostbudeUdbetaling + ...
... + postbudeUdbetaling + ...

Efter din fejlbesked at dømme, så må det have været den sidste du skrev.
Avatar billede chr.kj Nybegynder
04. november 2007 - 14:26 #13
Ok, så PostbudeUdbetaling() henviser til en funktion

og

PostbudeUdbetaling henviser til en variabel

Er det korrekt forstået?
Avatar billede nielle Nybegynder
04. november 2007 - 14:32 #14
Ja :^)
Avatar billede nielle Nybegynder
04. november 2007 - 14:35 #15
Funktioner kan tage argumenter i deres kald:

EnFunktion(7, 9, 13)

hvilket ikke giver mening for variable.

Nogen fuktioner vælger dog ikke at have argumenter, og dette vises ved at have en tom parantes:

EnFunktion()
Avatar billede chr.kj Nybegynder
04. november 2007 - 14:39 #16
Takker for den forklaring og for hjælpen :o)

Smider du et svar?
Avatar billede nielle Nybegynder
04. november 2007 - 14:48 #17
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