👤

Poate cineva sa gaseasca greseala in acest cod va rog, JAVA
Doar clasa Planificator trebuie editata

Trebuie să implementezi o clasă Planificator care conține o singură metodă, planifica(). Metoda primește ca parametru o listă de obiecte de tip Meeting, implementate anterior și modifică lista astfel încât ea să conțină doar meeting-urile care pot fi planificate într-un singur meeting room, astfel încât ele să nu se suprapună, sortate crescător în funcție de data de început. Soluția găsită trebuie să conțină un număr maxim de meeting-uri.


În cazul in care există mai multe soluții cu număr maxim de meeting-uri, să se găsească soluția care are șirul format din datele de sfârșit ale meeting-urilor cel mai mic lexicografic. În caz de egalitate între datele de sfârșit, se cere meeting-ul cu data de început cea mai mică.


Două meetinguri cu date de început în ordine crescătoare se suprapun dacă data de început al celui de-al doilea este mai mică sau egală decât data de sfârșit al primului.


Codul tău trebuie să conțină doar definiția clasei Planificator și ale unor eventuale clase ajutătoare.

import java.text.*;
import java.util.*;
class Meeting implements Comparable {
private Calendar starting, ending;
public Meeting(Calendar starting, Calendar ending) {
if (starting.compareTo(ending) > 0) {
throw new IllegalArgumentException("Invalid Data");
}
this.starting = starting;
this.ending = ending;
}
public Calendar getStarting() {
return starting;
}
public Calendar getEnding() {
return ending;
}
public int compareTo(Meeting m) {
return this.starting.compareTo(m.getStarting());
}
public String toString() {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
return sdf.format(starting.getTime()) + " -> " + sdf.format(ending.getTime());
}
}

class Planificator{
public static void planifica(List meetinguri) {
Collections.sort(meetinguri, new Comparator () {
@Override
public int compare(Meeting a, Meeting b) {
if (a.getInceput().equals(b.getInceput())) {
return a.getSfarsit().compareTo(b.getSfarsit());
} else {
return a.getInceput().compareTo(b.getInceput());
}
}
});

for (int i = 1; i < meetinguri.size(); ++i) {
Meeting a = meetinguri.get(i);
Meeting b = meetinguri.get(i - 1);
if (a.getInceput().get(Calendar.YEAR) == b.getSfarsit().get(Calendar.YEAR)) {
if (a.getInceput().get(Calendar.MONTH) == b.getSfarsit().get(Calendar.MONTH)) {
if (a.getInceput().get(Calendar.DATE) < b.getSfarsit().get(Calendar.DATE)) {
meetinguri.remove(a);
}
} else if (a.getInceput().get(Calendar.MONTH) < b.getSfarsit().get(Calendar.MONTH)) {
meetinguri.remove(a);
}
} else if (a.getInceput().get(Calendar.YEAR) < b.getSfarsit().get(Calendar.YEAR)) {
meetinguri.remove(a);
}
}
}
}
public class Main {
public static void main(String[] args) throws Exception {
try {
List l = new ArrayList<>();
l.add(new Meeting(new GregorianCalendar(1, 2, 3),
new GregorianCalendar(2, 2, 3)));
l.add(new Meeting(new GregorianCalendar(1, 2, 3),
new GregorianCalendar(5, 2, 3)));
l.add(new Meeting(new GregorianCalendar(3, 2, 3),
new GregorianCalendar(5, 2, 3)));
Scheduler.schedule(l);
System.out.println(l); // [03/03/0001 12:00:00 -> 03/03/0002 12:00:00, 03/03/0003 12:00:00 -> 03/03/0005 12:00:00] this is a test from platform, if we run the code with the added information, we are supposed to have this on output.
} catch (IllegalArgumentException e) {
System.out.print(e.getMessage());
}
}
}
Daca fac testul acesta
l.add(new Meeting(new GregorianCalendar(5, 2, 3),

new GregorianCalendar(5, 2, 3)));

l.add(new Meeting(new GregorianCalendar(6, 2, 3),

new GregorianCalendar(7, 2, 3)));

l.add(new Meeting(new GregorianCalendar(4, 2, 3),

new GregorianCalendar(5, 2, 3)));

l.add(new Meeting(new GregorianCalendar(6, 2, 7),

new GregorianCalendar(6, 2, 7)));


Outputul este " [03/03/0004 12:00:00 -> 03/03/0005 12:00:00, 03/03/0005 12:00:00 -> 03/03/0005 12:00:00, 03/03/0006 12:00:00 -> 03/03/0007 12:00:00] "

in loc de

"[03/03/0004 12:00:00 -> 03/03/0005 12:00:00, 07/03/0006 12:00:00 -> 07/03/0006 12:00:00]


Răspuns :

Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!


En Trainingsy: Alte intrebari