Trädvy Permalänk
Medlem
Registrerad
Apr 2017

Behöver hjälp med en metod

Skrivv ett program som med hjälp av en metod som heter
static double prisMedMoms (double pris);

som tar emot en variabel pris oc som lägger till momsen på priset. Momsen är 25 procent. Resultatet (priset med moms ska returneras tillbaka) och sedan skriva ut i main.

double pris = 125; double moms = 0.25; System.out.println("Tal" + moms); } static double prisMedMoms(double pris) { return svar; } }

Hur gör man?

Trädvy Permalänk
Moderator
Registrerad
Aug 2007

Du behöver skapa variabeln svar och lägga in priset inkl moms i den innan du kan returnera den.

Alternativt kan du lägga uträkningen direkt efter return. Jag skulle normalt inte göra så eftersom jag tycker att koden riskerar att bli otydlig, men med tanke på hur enkel din metod är så är det inte en issue i alla fall.

Använd gilla för att markera nyttiga inlägg!

Trädvy Permalänk
Medlem
Plats
Umeå
Registrerad
Jun 2013

@toh: Om du ska göra ett påslag med moms så bör du väl ändå sätta momsen till 1.25 då det är en 25% ökning? Eller tänker jag fel nu?

GPU: RX 480 CPU: I7-4790K. PSU: EVGA supernova 750W. Mobo: GA-Z87X-OC. RAM: 16GB (8x2).

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av SebKro:

@toh: Om du ska göra ett påslag med moms så bör du väl ändå sätta momsen till 1.25 då det är en 25% ökning? Eller tänker jag fel nu?

Får detta:

double pris = 125.0;
double moms = 0.25;

static double prisMedMoms(double pris, double moms)
{
return pris / (1.0 - moms);
}
System.out.println(prisMedMoms(pris, moms));

Fel / rätt?

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av giplet:

Du behöver skapa variabeln svar och lägga in priset inkl moms i den innan du kan returnera den.

Alternativt kan du lägga uträkningen direkt efter return. Jag skulle normalt inte göra så eftersom jag tycker att koden riskerar att bli otydlig, men med tanke på hur enkel din metod är så är det inte en issue i alla fall.

Gjorde detta

public static void main(String[] args) { double pris = 125.0; double moms = 0.25; System.out.println(prisMedMoms(pris, moms)); } static double prisMedMoms(double pris, double moms) { return pris / (1.0 - moms); } }

Funkar nu

Skulle behöva hjälp med en till, Har denna medelvärdes kod men vet icke hur jag ska skriva för att skriva ut talen som användaren skrev in dvs säga detta:

Scanner input = new Scanner(System.in); System.out.println("Hur många tal vill du mata in: "); int medelvardet = input.nextInt(); if (medelvardet<= 0) { System.out.println("För få tal att beräkna medelvärdet av."); System.exit(0); } double summa = 0; for (int i = 0; i < medelvardet; i++) { System.out.println("Mata in tal: "); summa += input.nextDouble(); } System.out.println("Medelvärdet är " + summa/medelvardet);

Vill att den skriver ut vad användaren skrev dessutom men vet icke hur jag ska få till det.

Trädvy Permalänk
Medlem
Registrerad
Jul 2013

@toh: Om du har 25% moms och priset är 100kr ex moms ska väl ändå priset ink moms bli 125kr?

Dvs, pris + pris * moms
100 + 100 * 0.25 = 125

Din metod gör, pris / (1.0 - moms)
100 / 0.75 = 133.33~

Eller missförstår jag dina variabel-/metod-namn?

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av sickhouse:

@toh: Om du har 25% moms och priset är 100kr ex moms ska väl ändå priset ink moms bli 125kr?

Dvs, pris + pris * moms
100 + 100 * 0.25 = 125

Din metod gör, pris / (1.0 - moms)
100 / 0.75 = 133.33~

Eller missförstår jag dina variabel-/metod-namn?

Utan moms blir 0.8 eller är jag ute och cyklar?
Så med moms så ska 100 då bli 125?

Trädvy Permalänk
Medlem
Registrerad
Jul 2013
Skrivet av toh:

Utan moms blir 0.8 eller är jag ute och cyklar?
Så med moms så ska 100 då bli 125?

Vet inte vart du får 0.8 från...

Du räknar bort momsen med:

prisInkMoms / (1.0 + moms)

125 / 1.25 = 100

Edit; oxo trött, ska vara division

Trädvy Permalänk
Medlem
Registrerad
Apr 2017
Skrivet av sickhouse:

Vet inte vart du får 0.8 från...

Du räknar bort momsen med:

prisInkMoms * (1.0 + moms)

125 * 1.25 = 100

Morgontrött... Helt rätt!

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Okt 2010

prisInkMoms = prisExkMoms*(1+moms)
prisExkMoms = prisInkMoms/(1+moms)

i5 750 @ 3.9 GHz | NH-D14 | P7P55D |GTX 960 | Vulcan 8GB | Seagate 600 480 GB | Newton 650w | P280 | Dell U2515H

Trädvy Permalänk
Medlem
Registrerad
Jul 2013
Skrivet av toh:

Morgontrött... Helt rätt!

Se min edit, dvs:

moms = 0.25
pris = 100

prisInkMoms = 100 * 1.25 = 125
prisExMoms = 125 / 1.25 = 100

Ursäkta förvirringen

Trädvy Permalänk
Medlem
Registrerad
Jul 2013
Skrivet av Rydisen:

prisInkMoms = prisExkMoms*(1+moms)
prisExkMoms = prisInkMoms/(1+moms)

Exakt skyller på tangentbordet på mobilen

Trädvy Permalänk
Medlem
Plats
/dev/null
Registrerad
Aug 2008

Pm = pris med moms
Pu = pris utan moms
M = momssats

För momsberäkning gäller:
Pm = Pu + Pu * M = Pu * (1+M)

För att byta ut multiplikation mot division måste nämnaren bytas ut mot sin reciprok (multiplikativa invers), dvs
Pm = Pu / (1/(1+M))

(Notera att 1/(1+M) inte är detsamma som 1-M, så "return pris / (1.0 - moms)" är, som redan konstaterats, matematiskt inkorrekt.)

0,8, som nämndes, kommer alltså ifrån att reciproken till 1,25 (=5/4) är just 0,8 (=4/5), så en division med 1,25 kan ersättas med en multiplikation med 0,8.

0,8 behöver dock inte blandas in i nämnda uppgift, utan är snarast användbart när man gör momsberäkningar i huvudet.

NUC: Intel i5-4250U | 8GB RAM | 250GB SSD
Laptop: Dell Latitude E7270
Laptop: MacBook Air 13"

Trädvy Permalänk
Medlem
Plats
Finland
Registrerad
Maj 2004
Skrivet av toh:

Gjorde detta

public static void main(String[] args) { double pris = 125.0; double moms = 0.25; System.out.println(prisMedMoms(pris, moms)); } static double prisMedMoms(double pris, double moms) { return pris / (1.0 - moms); } }

Funkar nu

Skulle behöva hjälp med en till, Har denna medelvärdes kod men vet icke hur jag ska skriva för att skriva ut talen som användaren skrev in dvs säga detta:

Scanner input = new Scanner(System.in); System.out.println("Hur många tal vill du mata in: "); int medelvardet = input.nextInt(); if (medelvardet<= 0) { System.out.println("För få tal att beräkna medelvärdet av."); System.exit(0); } double summa = 0; for (int i = 0; i < medelvardet; i++) { System.out.println("Mata in tal: "); summa += input.nextDouble(); } System.out.println("Medelvärdet är " + summa/medelvardet);

Vill att den skriver ut vad användaren skrev dessutom men vet icke hur jag ska få till det.

Då användaren matar in ett tal så måste du spara det någonstans innan du adderar det till summa för att kunna skriva ut det. Du har egentligen två alternativ:

1. Spara talet i en int som du skriver ut genast (med System.out.println för egen rad eller System.out.print för samma rad), och som du sedan adderar till summa

2. Spara alla talen i en array av samma längd som antalet tal, och loopa igenom och skriv ut den i slutet.