Informatică, întrebare adresată de claudianastasiu, 8 ani în urmă

Salut, am nevoie de acest program in java, multumesc!

Te-ai uitat peste cod și ai găsit clasa care salvează datele despre un meeting. Clasa se numește Meeting și are 2 câmpuri private de tip Calendar, dataInceput și dataSfarsit. Ea mai conține și un constructor care primește 2 parametri de tip Calendar, dataInceput și dataSfarsit, pe baza cărora actualizează valorile câmpurilor clasei. Dacă dataSfarsit e o dată mai mică decât dataInceput, constructorul aruncă o excepție de tipul IllegalArgumentException cu un mesaj sugestiv. În plus, clasa trebuie să implementeze metoda toString(), care returnează un String de forma dataInceput -> dataSfarsit, unde datele sunt în formatul zz/ll/aaaa hh:mm:ss (exemplu: 01/04/2019 11:20:00 -> 01/04/2019 11:50:00).

Sarcina ta e să implementezi clasa Meeting, care să conțină membrii specificați mai sus și să implementeze clasa Comparable. Metoda compareTo trebuie să compare obiectele în funcție de data de început.

Exemplu
import java.text.*;
import java.util.*;

// clasa ta aici

public class prog {
public static void main(String[] args) {
try {
List l = new ArrayList<>();
l.add(new Meeting(new GregorianCalendar(2019, Calendar.APRIL, 1, 11, 20, 0),
new GregorianCalendar(2019, Calendar.APRIL, 1, 11, 50, 0)));
l.add(new Meeting(new GregorianCalendar(2019, Calendar.MARCH, 3, 11, 20, 0),
new GregorianCalendar(2019, Calendar.MARCH, 5, 11, 50, 0)));
Collections.sort(l);
System.out.println(l);
// Se va afisa intai "03/03/2019 11:20:00 -> 05/03/2019 11:50:00", urmat de "01/04/2019 11:20:00 -> 01/04/2019 11:50:00"
} catch (IllegalArgumentException e) {
System.out.print(e.getMessage()); // Nu va afisa nimic
}
}
}

Răspunsuri la întrebare

Răspuns de andrei750238
3

import java.text.SimpleDateFormat;

import java.util.*;

class Meeting implements Comparable<Meeting>{

   private Calendar dataInceput, dataSfarsit;

   public Meeting(Calendar dataInceput ,Calendar dataSfarsit){

       if(dataInceput.compareTo(dataSfarsit) > 0) throw new IllegalArgumentException("dataInceput nu poate fi mai mica decat dataSfarsit");

       this.dataInceput = dataInceput;

       this.dataSfarsit = dataSfarsit;

   }

   @Override

   public int compareTo(Meeting o) {

       return dataInceput.compareTo(o.dataInceput);

   }

   @Override

   public String toString(){

       SimpleDateFormat frm = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

       return frm.format(dataInceput.getTime()) + " -> " + frm.format(dataSfarsit.getTime());

   }

}

public class Prog {

   public static void main(String[] args) {

       try {

           List<Meeting> l = new ArrayList();

           l.add(new Meeting(new GregorianCalendar(2019, Calendar.APRIL, 1, 11, 20, 0),

                   new GregorianCalendar(2019, Calendar.APRIL, 1, 11, 50, 0)));

           l.add(new Meeting(new GregorianCalendar(2019, Calendar.MARCH, 3, 11, 20, 0),

                   new GregorianCalendar(2019, Calendar.MARCH, 5, 11, 50, 0)));

           Collections.sort(l);

           System.out.println(l);

// Se va afisa intai "03/03/2019 11:20:00 -> 05/03/2019 11:50:00", urmat de "01/04/2019 11:20:00 -> 01/04/2019 11:50:00"

       } catch (IllegalArgumentException e) {

           System.out.print(e.getMessage()); // Nu va afisa nimic

       }

   }

}

Alte întrebări interesante