Trädvy Permalänk
Medlem
Registrerad
Dec 2014

metodanrop i java

Hejsan!

Försöker lära mig java och det går väl sådär.

Har arbetat lite med metodanrop och har en fråga angående metodanrop. Jag har en uppgift där jag skall göra ett program som räknar ut räntan och gör åtta metodanrop. Metoden skall bara göra en uträkning i taget. Hur räknas metodanropen? Jag vore galet tacksam över en liten förklaring
Jag har skrivit följande kod:

import java.util.Scanner; class Practice1{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); Practice1 count = new Practice1(); int startsum; double interest, win, total; int counter = 0; System.out.print("Ange startsumma: "); startsum = scan.nextInt(); while (counter <8){ System.out.print("Ange ränta: "); interest = scan.nextDouble(); counter++; win = count.add(startsum, interest); System.out.println("Räntevinsten blir " + win); total = count.total(win, startsum); System.out.println("Ditt saldo blir " + total + "\n"); } System.out.println("Dina åtta ränteuträkningar är slut."); } private double add(int startsum, double interest){ return (startsum * interest/100); } private double total(double win, int startsum){ return (win + startsum); } }

Tack

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Okt 2011
Skrivet av JJ72:

Hejsan!

Försöker lära mig java och det går väl sådär.

Har arbetat lite med metodanrop och har en fråga angående metodanrop. Jag har en uppgift där jag skall göra ett program som räknar ut räntan och gör åtta metodanrop. Metoden skall bara göra en uträkning i taget. Hur räknas metodanropen? Jag vore galet tacksam över en liten förklaring
Jag har skrivit följande kod:

import java.util.Scanner; class Practice1{ public static void main(String[] args) { Scanner scan = new Scanner(System.in); Practice1 count = new Practice1(); int startsum; double interest, win, total; int counter = 0; System.out.print("Ange startsumma: "); startsum = scan.nextInt(); while (counter <8){ System.out.print("Ange ränta: "); interest = scan.nextDouble(); counter++; win = count.add(startsum, interest); System.out.println("Räntevinsten blir " + win); total = count.total(win, startsum); System.out.println("Ditt saldo blir " + total + "\n"); } System.out.println("Dina åtta ränteuträkningar är slut."); } private double add(int startsum, double interest){ return (startsum * interest/100); } private double total(double win, int startsum){ return (win + startsum); } }

Tack

Har lite svårt att förstå vad saker ska göra, add räknar ut hur mycket du fått i ränta den här gången och total vad startsumman plus senaste räntan är. Vad är det uppgiften säger de ska göra? Ska du ha 8 separata räntor eller det är ett bankkonto där du ska lägga på ny ränta på samma konto varje varv?

metoder är add och total i det här programmet, metodanrop är varje gång du säger till programmet att du ska använda en av dem. Så just nu har du 16 stycken, 8 av varje eftersom din loop körs 8 gånger och de körs en gång var varje varv.

Corsair Vengeance LPX 2x8GB DDR4 2666MHz CL16 | Intel Core i7 6700 3,4 GHz 8MB | MSI Z170A KRAIT GAMING | Corsair Force Series 3 120 GB | Seagate SSHD Desktop 2 TB 7200 RPM 3,5" | Creative Sound Blaster Z PCIe | Western Digital 500 GB | Samsung Writemaster | Corsair TX750 V2 750 W | EVGA GeForce GTX 970 4GB SSC ACX 2.0+| Fractal Design Define R5 (Svart)

Trädvy Permalänk
Medlem
Registrerad
Dec 2014

Såhär lyder frågan:

"Skriv ett program som har, och använder, en metod för att beräkna årlig vinst
baserat på olika ingångssummor och olika räntesatser.
Metoden skall ta ingångssumman och räntesatsen som parametrar och
skriva ut resultatet. Båda parametrarna skall vara av typen double och räntan
skall anges på följande format: 5% = 0.05
Använd den skapade metoden för att beräkna den årliga vinsten för en fast
ingångssumma men med olika värden på räntesatsen. Exempelvis kan
ingångssumman vara 10kkr och räntesatsen variera från 2% till 9%. Se till att
varje beräkning skrivs ut på skärmen så att användaren kan se skillnaden
mellan de olika räntesatserna.
OBS: Metoden skall bara göra EN uträkning i taget.
Följande måste användas:
1. En metod med två parametrar
2. Åtta metodanrop"

Men med utgångspunkt från ditt svar så upplever jag att jag förstått frågan rätt...?
"metodanrop är varje gång du säger till programmet att du ska använda en av dem."
Den meningen förklarar verkligen typ allt jag funderade på

Jag är MYCKET tacksam

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Maj 2004

Bortsett från punkt 2 är det väl åtminstone ganska klart: laga en metod som tar två parametrar (ingångssumma, räntesats) och skriver ut resultatet. Det hade du väl under kontroll.

Sedan tycker jag det är lite oklart vilka metodanrop som avses. I och med exemplet säger att räntesatsen varierar från 2% till 9% så blir det ju 8 anrop, så antagligen det som avses. Dock är System.out.print()/println(), scan.nextInt() osv. också metodanrop.

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
Skrivet av JJ72:

Såhär lyder frågan:

"Skriv ett program som har, och använder, en metod för att beräkna årlig vinst
baserat på olika ingångssummor och olika räntesatser.
Metoden skall ta ingångssumman och räntesatsen som parametrar och
skriva ut resultatet. Båda parametrarna skall vara av typen double och räntan
skall anges på följande format: 5% = 0.05
Använd den skapade metoden för att beräkna den årliga vinsten för en fast
ingångssumma men med olika värden på räntesatsen. Exempelvis kan
ingångssumman vara 10kkr och räntesatsen variera från 2% till 9%. Se till att
varje beräkning skrivs ut på skärmen så att användaren kan se skillnaden
mellan de olika räntesatserna.
OBS: Metoden skall bara göra EN uträkning i taget.
Följande måste användas:
1. En metod med två parametrar
2. Åtta metodanrop"

Men med utgångspunkt från ditt svar så upplever jag att jag förstått frågan rätt...?
"metodanrop är varje gång du säger till programmet att du ska använda en av dem."
Den meningen förklarar verkligen typ allt jag funderade på

Jag är MYCKET tacksam

Citat:

Skriv ett program som har, och använder, en metod för att beräkna årlig vinst baserat på olika ingångssummor och olika räntesatser.
Metoden skall ta ingångssumman och räntesatsen som parametrar och skriva ut resultatet.
...
Se till att varje beräkning skrivs ut på skärmen så att användaren kan se skillnaden mellan de olika räntesatserna.

Jag tolkar detta stycke som att programmet endast ska ha en ingångsmetod som gör alla beräkningar och skriver ut svaret. Dvs du kan skrota add och total. Innan resultatet skrivs ut ska även formeln för beräkningen skrivas ut, typ "Beräkning för 17500.0 kronor och räntesatsen 5%"

Det står ingenstans att du ska låta användaren skriva in ett värde, inte heller att du ska loopa. Förmodligen menar författaren att du ska anropa din metod med åtta fasta värden, så här:

private static final double ingångsvärde = 17500.0; public static void main(String[] args) { beräknaOchSkrivUtVinst(ingångsvärde, 0.05); beräknaOchSkrivUtVinst(ingångsvärde, 0.03); ... fem anrop med olika värden beräknaOchSkrivUtVinst(ingångsvärde, 0.07); }

Tänk på att det är vinsten som ska skrivas ut, inte det totala beloppet på kontot.

edit: det är inget dåligt med att skriva småmetoder som löser enskilda problem, t ex att räkna ut vinst över X månader givet ett initialt belopp och en räntesats (beräknaVinst(double belopp, double räntesats, int månader) men det omfattas inte av uppgiftsbeskrivningen.

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
åkersberga, Täby
Registrerad
Jun 2004

varför skicka parametrar?

är inte fältvariablerna nåbara i alla metoder?

nvm såg att det itne fanns några fields

Dator 1.
FX 8350 4.7Ghz | 24GB ram | MSI Radeon RX 480 | Kingston SSD | Fractal design R2.0 | PSU : Fractal 650W
Dator 2 (Bärbar). HP Folio 9470m