Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Maj 2009

räknefråga

Har frågat om detta program förut här, och fick mycket bra hjälp=)
Har dessvärre kört fast igen, eller programmet fungerar och gör det jag vill, men uträkningen fungerar inte. Jag har antagligen missat något, men jag ser inte vad.

Antagligen jäkligt simpelt, men för en nybörjare är det svettigt...

Programmet ska räkna ut total veckolön efter att man matat in arb.timmar och timlön, överstiger timmarna 40 så betalas övertidsersättning ut med 50% på den ord. timlönen för de överskjutande timmarna.

Detta är min kod:

import javax.swing.*; public class Pay3{ public static void main(String[] arg) { String s; s = JOptionPane.showInputDialog("Ange antal arbetstimmar: "); double a = Double.parseDouble(s); JOptionPane.showInputDialog("Ange timlön:"); double b = Double.parseDouble(s); if (a <= 40) { double c = a*b; JOptionPane.showMessageDialog(null, "veckolönen är: " + c); } else if (a > 40) { double c = ( 40*b ) + (( a-40 )*1.5); JOptionPane.showMessageDialog(null, "veckolönen är: " + c); } System.exit(0); } }

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

Nu skrev du ju inte vad som gick snett, så det tog ett tag innan jag upptäckte felet: Du tilldelar aldrig inmatningen från timlönen till en variabel. Resultatet blir att variabel a och b får lika värde.

Återigen (fan vad gaggig jag känner mig) namnge dina variabler så att man kan läsa vad de hanterar för värde!

edit: och tabba lugnt och metodiskt istället för sporadiskt och slumpmässigt

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

Trädvy Permalänk
Medlem
Plats
Laholm
Registrerad
Okt 2005

Vill du inte ha (40*b)+((a-40)*(1.5*b)) ?

ASP.NET programmerare i C#
Twitter: http://www.twitter.com/hagbarddenstore

Trädvy Permalänk
Medlem
Plats
Laholm
Registrerad
Okt 2005

import javax.swing.*; public class Pay3 { public static void main(String[] arg) { String input = JOptionPane.showInputDialog("Ange antal arbetstimmar: "); double hoursPerWeek = Double.parseDouble(input); input = JOptionPane.showInputDialog("Ange timlön:"); double hourlyWage = Double.parseDouble(input); if (a <= 40) { double c = hoursPerWeek * hourlyWage; JOptionPane.showMessageDialog(null, "veckolönen är: " + c); } else if (a > 40) { double c = (40 * hourlyWage) + ((hoursPerWeek - 40) * (1.5 * hourlyWage)); JOptionPane.showMessageDialog(null, "veckolönen är: " + c); } System.exit(0); } }

ASP.NET programmerare i C#
Twitter: http://www.twitter.com/hagbarddenstore

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Maj 2009

Tack så hemskt mycket för hjälpen!!
Men var mitt enda fel att jag missade att ta x timlönen på slutet?
Vill verkligen förstå vad jag gjorde för fel!

Och Teknocide: Jag lovar att namnge de bättre i fortsättningen! Jag är ganska ny på programmering, men fler och fler bitar börjar falla på plats i huvudet nu!

Tack än en gång!

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Maj 2004

Nej du glömde att skriva över "s" med den andra inmatningsrutan. Den spottar bara ut din andra utmatning i ingenting.

Trädvy Permalänk
Medlem
Plats
Sverige
Registrerad
Maj 2009

Ja! Nu ser jag! Tack så mycket!!