07. marts 2004 - 16:24
Der er
6 kommentarer og 1 løsning
Intervaller i Java
Som bekendt giver Java ikke direkte adgang til at arbejde med intervaller. Hvordan kan man så nemmest løse følgende eksempel: Jeg har en metode til beregning af pris: public double beregnPris(int sider) { double pris = ??????; return pris; } Lad os sige at: Side 1-20 koster 5 kr. Side 21-40 koster 4 kr. Side 41-60 koster 3 kr. Side 61- koster 0,5 kr. Den samlede pris skal returneres. Jeg kan godt lave det ved hjælp af en masse if-sætninger. Men det bliver da hurtigt tungt. Er det ikke muligt at bruge noget modulus-regning eller lignende? ;)
Annonceindlæg fra Barco
07. marts 2004 - 16:35
#1
Umiddelbart vil jeg sige at enten 1 "ægte" if per interval eller en "uægte" if i form af ?: operatoren er de muligheder der er.
07. marts 2004 - 16:36
#2
Det passer vist ikke. Du bør vel også kunne bruge max. Det tror jeg er kønnest.
07. marts 2004 - 16:41
#3
Okay, det var da forholdsvis ærgerligt. Hvad mener du med "max"? :)
07. marts 2004 - 16:48
#4
Hm. Det blev vist ikke så kønt alligevel. Døm selv: public class Calc { public static double beregnPris1(int sider) { return Math.min(sider, 20) * 5 + Math.min(Math.max(sider - 20, 0), 20) * 4 + Math.min(Math.max(sider - 40, 0), 20) * 3 + Math.max(sider - 60, 0) * 0.5; } public static double beregnPris2(int sider) { if (sider <= 20) { return sider * 5; } else if (sider <= 40) { return (sider - 20) * 4 + 20 * 5; } else if (sider <= 60) { return (sider - 40) * 3 + +20 * 4 + 20 * 5; } else { return (sider - 60) * 0.5 + 20 * 3 + 20 * 4 + 20 * 5; } } public static void main(String[] args) { System.out.println(beregnPris1(10) + " " + beregnPris1(10)); System.out.println(beregnPris1(30) + " " + beregnPris2(30)); System.out.println(beregnPris1(50) + " " + beregnPris2(50)); System.out.println(beregnPris1(70) + " " + beregnPris2(70)); } }
07. marts 2004 - 17:09
#5
Efter at have gennemskuet hvordan Math.max() og Math.min() virker, synes jeg egentlig de er ret smarte her. Du skal være velkommen til at lægge et svar.
07. marts 2004 - 17:20
#6
ok
07. marts 2004 - 17:22
#7
Tak for hjælpen :)
Kurser inden for grundlæggende programmering