Avatar billede noex Nybegynder
22. januar 2003 - 09:48 Der er 12 kommentarer og
1 løsning

Metode, som kan finde datoen for de næste ti fredage

Jeg står med en int ugedag, der har værdien 5. Dette udtrykker, at det er fredag. På baggrund af denne værdi, skal jeg bruge en metode, som kan returnere datoerne for de næste 10 fredage. Metoden skal naturligvis tage min ugedag variabel som argument.
Avatar billede arne_v Ekspert
22. januar 2003 - 10:06 #1
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class WeekDay {
    public static Date next(int n, int weekday) {
        Calendar ref = new GregorianCalendar();
        while(ref.get(Calendar.DAY_OF_WEEK) != weekday) {
            ref.add(Calendar.DAY_OF_YEAR, 1);
        }
        ref.add(Calendar.WEEK_OF_YEAR, n);
        return ref.getTime();
    }
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " : " + next(i, Calendar.FRIDAY));
        }
    }
}
Avatar billede arne_v Ekspert
22. januar 2003 - 10:07 #2
Ovenstående program finder de næste 10 fredage.
Avatar billede arvad Nybegynder
22. januar 2003 - 10:14 #3
arne_v::: Kalder du det et program??? Hmmm ville godt kende din defination af et "program" *SS*

Men klassen ser godt ud!!!
Avatar billede arne_v Ekspert
22. januar 2003 - 10:22 #4
Program = noget som kan køres selvstændigt.

Jeg regner da med at du sletter den main metode, men jeg
ville jo godt lige checke at det virkede inden jeg postede
koden.
Avatar billede disky Nybegynder
22. januar 2003 - 11:10 #5
noex:
Prøv at søg på sitet, lignende spørgsmål er blevet besvaret mange gange.

Ingen grund til at bruge point på problemmer der er blevet løst før.
Avatar billede noex Nybegynder
22. januar 2003 - 12:03 #6
Perfekt. Jeg takker og bukker :-)
Avatar billede trp79 Nybegynder
22. januar 2003 - 13:36 #7
Hvordan kan man gøre det sådan at man går tilbage i tiden istedet for frem? Altså så man se de 10 forrige fredage istedet for kommende? Lige en anden ting, hvis man nu går 1000 fredage frem eller tilbage i tiden, tager den så højde for skudår?
Avatar billede arne_v Ekspert
22. januar 2003 - 13:40 #8
Ja. Den tager højde for skudår.
Avatar billede trp79 Nybegynder
22. januar 2003 - 13:43 #9
Det lyder godt, så kan man jo uden de store problemer fx finde ud af hvilken dag man blev født... Takker :o)
Avatar billede arne_v Ekspert
22. januar 2003 - 13:44 #10
For at køre baglæns:

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class WeekDayBack {
    public static Date next(int n, int weekday) {
        Calendar ref = new GregorianCalendar();
        while(ref.get(Calendar.DAY_OF_WEEK) != weekday) {
            ref.add(Calendar.DAY_OF_YEAR, -1);
        }
        ref.add(Calendar.WEEK_OF_YEAR, -n);
        return ref.getTime();
    }
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            System.out.println(i + " : " + next(i, Calendar.FRIDAY));
        }
    }
}
Avatar billede arne_v Ekspert
22. januar 2003 - 13:46 #11
Bemærk lige at hvis du vil køre både forlæns og baglæns så skal
du blive enig om en konvention for hvad 1 frem og 1 tilbage er.

Mit fremad program går frem til næste af ugedagen og kalder den 0 og bruger
det som basis.

Mit tilbage program går tilbage til sidste af ugedagen og kalder den 0
og bruget det som basis.
Avatar billede arne_v Ekspert
22. januar 2003 - 13:48 #12
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class WeekDay {
    public static Date next(int n, int weekday) {
        Calendar ref = new GregorianCalendar();
        while(ref.get(Calendar.DAY_OF_WEEK) != weekday) {
            ref.add(Calendar.DAY_OF_YEAR, 1);
        }
        ref.add(Calendar.WEEK_OF_YEAR, n);
        return ref.getTime();
    }
    public static void main(String[] args) {
        for (int i = -10; i <= 10; i++) {
            System.out.println(i + " : " + next(i, Calendar.FRIDAY));
        }
    }
}

er konsistent. Næste forekomst af ugendagen er 0 og positive tal betyder
frem og negative tal tilbage.
Avatar billede trp79 Nybegynder
22. januar 2003 - 13:55 #13
Forrygende Arne, dejligt med lidt forklaring :o)
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