Edit: Und eine Java-Lösung für die es sicher keine gute Punktzahl geben wird.
Month.java:
Code: Alles auswählen
package de.python_forum.blackjack.dosdate;
public enum Month {
JANUARY("January"), FEBRUARY("February"), MARCH("March"), APRIL("April"),
MAY("May"), JUNE("June"), JULY("July"), AUGUST("August"),
SEPTEMBER("September"), OCTOBER("October"), NOVEMBER("November"),
DECEMBER("December");
private final String name;
private Month(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
Code: Alles auswählen
package de.python_forum.blackjack.dosdate;
public class DosDate {
private static final Month[] MONTHS = Month.values();
private final int day;
private final int month;
private final int year;
private DosDate(int day, int month, int year) {
if (day < 1 || day > 31
|| month < 1 || month > 12
|| year < 1 || year > 0x3fff)
{
throw new IllegalArgumentException("not a valid dos date");
}
this.day = day;
this.month = month;
this.year = year;
}
public static DosDate fromEncoded(int encoded) {
if (encoded < 0 || encoded > 0x7fffff) {
throw new IllegalArgumentException("encoded value out of range");
}
return new DosDate(encoded & 0x1f, encoded >> 5 & 0xf, encoded >> 9);
}
@Override
public String toString() {
return "" + day + " " + MONTHS[month - 1] + " " + year;
}
}
Code: Alles auswählen
package de.python_forum.blackjack.dosdate;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
private static final BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
private static int readInt() throws IOException {
return Integer.parseInt(reader.readLine());
}
public static void main(String args[]) throws IOException {
int n = readInt();
for (int i = 0; i < n; i++) {
System.out.println(DosDate.fromEncoded(readInt()));
}
}
}