23. marts 2003 - 16:40Der er
19 kommentarer og 3 løsninger
Hjælp, kan ik finde ud af at får det til at virke...
Hej, jeg er ikke den store programmør, men har dog alligevel vovet mig ud i at forsøge at lave nogle små programmer...
I det her program har jeg valgt at jeg skal kunne taste et antal kilometer ind fra tasteturet og så skal den selv regne ud hvad jeg kan trække fra i fradrag når jeg kører fra hjemmet til arbejdet... Men jeg har nok valgt forkerte løsninger for kan ik kobinere det så det virker... Nogen der kan hjælpe `?
Her er koden:
public class fradrag2 {
static double km = 0; static double fradrag = 0;
public static void main( String args[]) { hastighedsgennemsnit(); }
private static void hastighedsgennemsnit() { int km; double fradrag; km = 0; fradrag = 0;
ConsoleReader indles = new ConsoleReader( System. in); System.out.print("Indtast kilometer for denne tur,og 0 for afslut");
km = indles.readInt();
while( km != 0) { beregn(antalKm); System.out.print("Indtast kilometer for denne tur,og 0 for afslut"); km = indles.readInt(); } }
public double beregn(int antalKm) { km = antalKm;
if (km <= 24) fradrag = 0; System.out.println("Fradrag for " + km + " :" + fradrag); else if (km <= 100) fradrag = ((km-24) * 1.54); System.out.println("Fradrag for " + km + " :" + fradrag); else if (km > 100) fradrag = ((km-24) * 1.54) + ((km-100) * 0.77); System.out.println("Fradrag for " + km + " :" + fradrag);
System.out.print("Indtast kilometer for denne tur,og 0 for afslut"); for (;;) { int km = Integer.parseInt(keyboard.readLine()); if (km == 0) break; System.out.println("Fradrag for " + km + " :" + beregn(km));
Helt enig, jeg gik bare ud fra at det var en fejl med alle de System.out's så jeg brugte void istedet. Jeg kan dog ikke li'/forstå din brug af for(;;) frem for while (true). Jeg mener det er bedste kun at bruge for-løkker når man kender intervallet der gennemløbes.
Jeg tænkte nu ikke lige så meget på hvordan det så ud, men mere på princippet i at bruge en while-løkke til (potentielt) uendelige gennemløb, og en for-løkke til gennemløb med kendte "dimensioner".
Den form for for-løkke der er i sprog af Pascal familien er til kendt antal gennemløb.
Sprog i C familen har fået en mere generel for-løkke. Den er ikke kun tiltænkt situationer med kendt antal gennemløb. Test expression behøver ikke engang involvere nogle variable fra forInit eller forUpdate delen.
Personligt kan jeg faktisk bedre lide Pascal varianten kombineret med "den fjerde løkke-type" som kendt fra Modula-2 til mere generelle løkker.
Men som bekendt har markedet bestemt at det ikke skulle være sådan.
Ja det ser ud som om at det virker meget godt, men problemet er at jeg ikke forståer meget af de komandoer i har brugt. Nogen der kan forklarer en begynder hvad de forskellige komandoer som er brugt gør og hvad de betyder som enhed og for selve programmet... Ellers tak for hjælpen :)
hehe er ked af at indrømme det men det er nok hele koden i det hele tager. Det jeg selv har lavet kan jeg forstå nogenlunde, men hvorfor og hvordan de komandoer som i er smidt ind for at det hele virker kan jeg ikke finde ud af..
Jeg tror du vil få stor glæde af at læse: www.javabog.dk Enten på nettet eller købe bogen, det er et kursus i java programmering, som efter sigende skulle være ret godt, og det er skrevet på dansk.
Ja har bestilt bogen, men problemet ligger i at jeg deltager i et kursus hvor vi af og til skal aflevere et program alt efter hvor langt vi er kommet, så jeg skal helst kunne redegøre for hvad der står. Jeg forsøgte selv at lave det men løb hurtigt ind i problemer. :)
private static void process() { try { BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in)); // lav et objekt der har en readLine metode
System.out.print("Indtast kilometer for denne tur,og 0 for afslut"); // prompt fro input for (;;) { // løkke der kun terminerer med break int km = Integer.parseInt(keyboard.readLine()); // læs linie og konverter til int if (km == 0) break; // hop ud af løkken hvis km=0 System.out.println("Fradrag for " + km + " :" + beregn(km)); // udskriv fradrag
} // slut løkke } catch (IOException e) { e.printStackTrace(); // udskriv stack trace hvis der opstår en IO fejl } }
Nedenstående burde være rimeligt klart (ligne rogså dit meget):
public static double beregn(int km) { if (km <= 24) { return 0.0; } else if (km <= 100) { return ((km - 24) * 1.54); } else if (km > 100) { return ((km - 24) * 1.54) + ((km - 100) * 0.77); } return 0.0; }
Synes godt om
Ny brugerNybegynder
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.