Avatar billede Javapain1 Nybegynder
05. oktober 2012 - 17:26 Der er 38 kommentarer

HJælp til indledende programmerings opgave i eclipse

Hej,

Jeg skal have løst nedenstående opgave i programmet eclipse. Jeg har ingen anelser om hvordan koden skal se ud og hvordan den skal løses.

Håber der er er nogen der kan hjælpe.


Write a program ParkAutomat which controls a park
automat. Parking cost 20 dkk. per hour. The maximum parking time 2 hours. The
customer arrives at a full hour or half hour ( XX:00 or XX:30). The arrival time is
selected at random. The customer buys time by inserting coins (with values 20, 10,
5, 2, 1). The machine shows end time for the parking. The user can select "Buy" or
"Cancel" with the obvious reactions. If more money is inserted than the maximum
parking time allows, the rest is returned.
Times are shown in the format HH:MM.
A snippet of a dialog could look like this:
****************************
The time is 23:00
Parking time until 23:00
Please insert Coins
C - Cancel
B - Buy
****************************
20
****************************
The time is 23:00
Parking time until 00:00
Please insert Coins
C - Cancel
B - Buy
****************************
5
****************************
The time is 23:00
Parking time until 00:15
Please insert Coins
C - Cancel
B - Buy
****************************
2
B
Your ticket is printed . Thank you
========== Customer handled ============
****************************
The time is 08:00
Parking time until 08:00
Please insert Coins
C - Cancel
B - Buy
****************************
2
****************************
The time is 08:00
Parking time until 08:06
Please insert Coins
C - Cancel
B - Buy
****************************
C
Operation cancelled . Money returned 2 dkk.
========== Customer handled ============
****************************
The time is 21:30
Parking time until 21:30
Please insert Coins
C - Cancel
B - Buy
****************************
20
****************************
The time is 21:30
Parking time until 22:30
Please insert Coins
C - Cancel
B - Buy
****************************
10
****************************
The time is 21:30
Parking time until 23:00
Please insert Coins
C - Cancel
B - Buy
****************************
20
Max parking time reached . 10 ddk returned .
****************************
The time is 21:30
Parking time until 23:30
C - Cancel
3
B - Buy
****************************
B
Your ticket is printed . Thank you
========== Customer handled ============
Avatar billede arne_v Ekspert
05. oktober 2012 - 17:43 #1
Du kan vel starte med at kode dialogen med brugeren?
Avatar billede Javapain1 Nybegynder
05. oktober 2012 - 19:09 #2
Det tror jeg ikke helt jeg forstår?
Avatar billede arne_v Ekspert
06. oktober 2012 - 02:36 #3
Start med at kode det der skrives til og laeses fra brugeren.
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 11:19 #4
Det er det der er problemet for mig. Jeg kan ikke se hvordan koden skal se ud. :(
Avatar billede arne_v Ekspert
06. oktober 2012 - 13:03 #5
I har vel faaet noget undervisning i de dele af Java der skal bruges.
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 13:52 #6
Ja det har vi. Altså vi har haft kurset 4 gange. vi har lært lidt om loops og noget grundlæggende programmering.

Kan du komme med nogle hint til hvilke metoder jeg skal bruge for at læse den her opgave?
Avatar billede arne_v Ekspert
06. oktober 2012 - 14:41 #7
Til indlaesning kan du bruge Scanner klassen og til udskriving System.out.print(ln)
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 14:47 #8
okay tak,

hvordan kan man indsætte tiden og hvor meget kunden betaler?
Avatar billede arne_v Ekspert
06. oktober 2012 - 15:00 #9
Arrival time er random (brug java.util.Random).

Gyldig til kan beregnes udfra arrival tid og beloeb betalt.

Beloeb betalt er bruger input.
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 15:15 #10
Hvordan kan man beregne gyldighed til udfra arrival tid og beløb betalt?
Avatar billede arne_v Ekspert
06. oktober 2012 - 15:25 #11
du ved at det koster 20 kr. i timen
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 15:44 #12
Jeg har prøvet at starte men er kørt fast og kan ikke komme videre:


import java.util.Random;
import java.util.Scanner;


public class ParkAutomat {
    public static void main (String [] args){
        Scanner console = new Scanner (System.in);
       
        System.out.println ("This program computes per hour" + "Parking payments.");
        System.out.print("Arrival time    :");
        double Arrivaltime = console.nextDouble ();
       

        Random r= new Random ();
        System.out.println ("This program computes per hour" + "Parking payments.");
        System.out.print("Parking time until : ");
        int result;
        while (result !=number){
            result=r.nextInt(2)+0;
            System.out.println("next number = " + result);
           
    }
        int Parking = console.nextInt ();
        System.out.print("Please insert Coins  :");
        double Coins = console.nextDouble();
       
       
        System.out.print("C-Cancel    :");
        double C = console.nextDouble ();
        System.out.print("B-Buy  :");
        double B = console.nextDouble ();
        System.out.println();
       
        //compute result and report
        int r=20;
       
                double r=(20,10,5,2,1);
                double (XX:00 or XX:30);
                double payment = (20,10,5,2,1);
                System.out.println ("payment = dkk" + (int) payment);
    }
}
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 15:45 #13
Kan du prøve at fjerne det der er helt forkert?
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 16:33 #14
Jeg kan ikke rigtig se hvordan jeg skal få skrevet tiden ind?
Avatar billede arne_v Ekspert
06. oktober 2012 - 17:17 #15
double r=(20,10,5,2,1);
                double (XX:00 or XX:30);
                double payment = (20,10,5,2,1);

er helt forkert
Avatar billede arne_v Ekspert
06. oktober 2012 - 17:18 #16
r.next(24) + ":" + r.next(2)*30

skulle give en tid (dog uden foranstillet 0 paa minutter)
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 17:23 #17
Tak,

Hvordan kommer jeg ind på det med maks 2 timer?
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 17:24 #18
Hvad er fejlen her:

      Random r= new Random ();
        System.out.println ("This program computes per hour" + "Parking payments.");
        System.out.print("Parking time until : ");
        int result;
        while (result !=number){
            result=r.next(24) + ":" + r.next(2)*30;
            System.out.println("next number = " + result);
Avatar billede arne_v Ekspert
06. oktober 2012 - 17:27 #19
de max. 2 timer betyder vel at der max. kan smides 40 kroner i
Avatar billede arne_v Ekspert
06. oktober 2012 - 17:28 #20
hvad skal den while loekke bruges til?

oevrigt er det tilfaeldige tal ikke gyldigt til men gyldigt fra
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 17:32 #21
ja det er rigtigt.

Hvordan kan jeg skrive det med max 40 kr?

derudover forstår jeg heller ikke hvordan jeg skal skrive nedenstående i java?

The customer buys time by inserting coins (with values 20, 10,
5, 2, 1).
Avatar billede arne_v Ekspert
06. oktober 2012 - 17:36 #22
Brugeren indtaster en vaerdi.

Du checker om den er valid.

Og du taeller gyldig til op.
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 18:03 #23
hvilken variabel skal r.next(24) + ":" + r.next(2)*30 have?
den bliver ved med at sige der er fejl hver gang jeg giver den en variabel.
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 18:04 #24
også siger den at der fejl ved første + i den kode du skrev.
Avatar billede arne_v Ekspert
06. oktober 2012 - 18:54 #25
String timstr = r.next(24) + ":" + r.next(2)*30;

eller bedre (naar du skal til at beregne slut tid):

int h = r.next(24);
int m = r.next(2) * 30;
String timstr = h + ":" + m;
Avatar billede arne_v Ekspert
06. oktober 2012 - 18:55 #26
Du skal stadigvaek ogsaa haandtere at 8 bliver til 08 for minutter.
Avatar billede arne_v Ekspert
06. oktober 2012 - 18:55 #27
og saa er det muligt at r.next er r.nextInt
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 20:56 #28
angående antal minutter, skal det jo enten være 00 eller 30 minutter. ?
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 21:14 #29
Angående den kode du lige skrev, bliver den ved med at sige at der er noget galt ned next. Jeg kan ikke rigtig se hvad fejlen er.
Random r= new Random ();
        int h = r.next(24);
        int m = r.next(2) * 30;
        String timstr = h + ":" + m;
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 22:06 #30
Lige nu ser koden således ud og kan ikke komme videre:
import java.util.Random;
import java.util.Scanner;


public class ParkAutomat {
    public static void main (String [] args){
        Scanner console = new Scanner (System.in);
        System.out.println ("This program computes parking hours" + "Parking payments.");
        System.out.print("Arrival time    :");
        double Arrivaltime = console.nextDouble ();
        Random r= new Random ();
        int h = r.nextInt(24);
        int m = r.nextInt(2) * 30;
        String timstr = h + ":" + m;
           
   
        int Parking = console.nextInt ();
        System.out.print("Please insert Coins  :");
        double Coins = console.nextDouble();
       
       
        System.out.print("C-Cancel    :");
        double C = console.nextDouble ();
       
        System.out.print("B-Buy  :");
        double B = console.nextDouble ();
        System.out.println();
       
     
     
                System.out.println ("payment = dkk");
    }
}
Avatar billede arne_v Ekspert
06. oktober 2012 - 22:23 #31
Det er r.nextInt(z) ikke r.next(z)
Avatar billede arne_v Ekspert
06. oktober 2012 - 22:24 #32
r.nextInt(2) * 30

vil altid vaere 0 eller 30
Avatar billede arne_v Ekspert
06. oktober 2012 - 22:25 #33
du skal nok laese en streng of saa teste om det er et tal, "C" eller "B" og saa goere noget forskelligt alt efter hvad det er
Avatar billede Javapain1 Nybegynder
06. oktober 2012 - 23:15 #34
Jeg er kørt helt fast i den her opgave.

Gider du løse det jeg ikke kan og prøve at forklare mig hvorfor opgaven skal løses på denne måde?
Avatar billede arne_v Ekspert
07. oktober 2012 - 00:37 #35
Du laerer ikke noget ved at jeg laver opgaven!
Avatar billede arne_v Ekspert
07. oktober 2012 - 03:40 #36
Men du kan faa et lille eksempel til inspiration:

import java.util.Scanner;

public class ScanDemo {
    public static void main(String[] args) {
        Scanner scn = new Scanner(System.in);
        int sum = 0;
        boolean done = false;
        while(!done) {
            System.out.print("Enter number or S: ");
            String line = scn.nextLine();
            if(line.equals("S")) {
                done = true;
            } else if(line.matches("^\\d+$")) {
                sum += Integer.parseInt(line);
            } else {
                System.out.println("Invalid input");
            }
        }
        System.out.println("The sum is: " + sum);
    }

}
Avatar billede Javapain1 Nybegynder
07. oktober 2012 - 14:32 #37
Jeg ville nok lære noget af dine forklaringer :)

jeg kan se at dit lille eksempel lægger tal sammen. Skal jeg bruge det i forhold til at summere antal coins?
Avatar billede arne_v Ekspert
07. oktober 2012 - 14:51 #38
det og saa hvordan du laeser noget og tester for hvad det er
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester