lots of exercises in java... from https://github.com/exercism/java

example.java 1.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import org.joda.time.DateTime;
  2. public class Meetup {
  3. private final DateTime startOfMonth;
  4. public Meetup(int monthOfYear, int year) {
  5. startOfMonth = new DateTime(year, monthOfYear, 1, 0, 0);
  6. }
  7. DateTime day(int dayOfWeek, MeetupSchedule schedule) {
  8. DateTime current = cycleToNext(dayOfWeek, startOfMonth);
  9. switch (schedule) {
  10. case FIRST:
  11. break;
  12. case SECOND:
  13. current = current.plusWeeks(1);
  14. break;
  15. case THIRD:
  16. current = current.plusWeeks(2);
  17. break;
  18. case FOURTH:
  19. current = current.plusWeeks(3);
  20. break;
  21. case TEENTH:
  22. while (current.getDayOfMonth() < 13) {
  23. current = current.plusWeeks(1);
  24. }
  25. break;
  26. case LAST:
  27. current = cycleToPrev(dayOfWeek, startOfMonth.plusMonths(1).minusDays(1));
  28. break;
  29. default:
  30. return null;
  31. }
  32. return current;
  33. }
  34. private DateTime cycleToPrev(int dayOfWeek, DateTime current) {
  35. while (current.getDayOfWeek() != dayOfWeek) {
  36. current = current.minusDays(1);
  37. }
  38. return current;
  39. }
  40. private DateTime cycleToNext(int dayOfWeek, DateTime current) {
  41. while (current.getDayOfWeek() != dayOfWeek) {
  42. current = current.plusDays(1);
  43. }
  44. return current;
  45. }
  46. }