Devo leggere un documento di testo con dati formattati come segue: (un paio di esempi)
07 M W F 1400 1450 C 2004
M W F 0900 1030 EN 2036
06 M T R 1300 1350 EN 1003
17 T R 0900 1015 EN 1052
Il problema che sto avendo è, una volta dividere queste stringhe con .split(" ", -1)
, ottengo un numero diverso di token per molti di essi, e la posizione della differenza varia nelle prime due "sezioni".
La prima parte della stringa dovrebbe rappresentare un codice di pianificazione. È facoltativo, come si può vedere dal fatto che manchi nella seconda riga. La seconda area descrive i giorni della settimana in cui si applica questo programma. Potrebbero essere ovunque da uno a cinque giorni, ma in questi esempi ce ne sono solo 2 o 3. Quindi il resto è praticamente statico: ora di inizio, ora di fine, codice di costruzione e numero di camera.
Quello che devo fare è costruire più oggetti per questo programma sulla base di queste informazioni (un oggetto per ogni giorno), e non sono sicuro di come procedere. Come posso dire, durante l'iterazione sulla serie di token, cosa rappresenta ciascun token? Ho pensato di utilizzare un'istruzione switch
, ma funzionerebbe solo per i giorni, poiché ce ne sono 5.
Quello che segue è il codice che (a titolo provvisorio) prevede di utilizzare per questo oggetto.
public class TimeSlot {
private Day day;
private int startTime; // # of minutes after midnight
private int endTime;
private Room room;
private String slot;
/**
* Default constructor. Create an instance of TimeSlot.
* @param day day of the week
* @param start start time of lecture represented as minutes after midnight
* @param end end time of lecture represented as minutes after midnight
* @param room room the class takes place in
*/
public TimeSlot(String slot, Day day, int start, int end, Room room) {
this.slot = slot;
this.day = day;
this.startTime = start;
this.endTime = end;
this.room = room;
}
}
enum Day {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
}
public class Room {
private String buildingCode;
private String roomNumber;
public Room(String building, String room) {
this.buildingCode = building;
this.roomNumber = room;
}
public String buildingCode() {
return buildingCode;
}
public String roomNumber() {
return roomNumber;
}
}