👤

Hello!

Am nevoie de ajutor sa rezolv problema:

import java.text.SimpleDateFormat;
import java.util.Date;

class Eveniment {
private Date dataInceput, dataSfarsit;
private String nume;

public Eveniment(String dataInceput, String dataSfarsit, String nume) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
this.dataInceput = format.parse(dataInceput);
this.dataSfarsit = format.parse(dataSfarsit);
} catch (Exception e) {
System.out.println("Data nu este in formatul cerut!");
}
this.nume = nume;
}

public Date getDataInceput() {
return dataInceput;
}

public Date getDataSfarsit() {
return dataSfarsit;
}

public String getNume() {
return nume;
}
}

class EvenimentRecurent extends Eveniment {
int numarOre;

public EvenimentRecurent(String dataInceput, String dataSfarsit, String nume, int numarOre) {
super(dataInceput, dataSfarsit, nume);
this.numarOre = numarOre;
}

public String urmatorulEveniment(String x) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date evenimentDupa = null;
try {
evenimentDupa = format.parse(x);
} catch (Exception e) {
e.printStackTrace();
}

Date copieStart = new Date(getDataInceput().getTime());
Date copieFinal = new Date(getDataSfarsit().getTime());

while (copieStart.before(evenimentDupa)) {
long nextEventMillis = copieStart.getTime() + (numarOre * 60 * 60 * 1000);
long nextFinalMillis = copieFinal.getTime() + (numarOre * 60 * 60 * 1000);
copieStart.setTime(nextEventMillis);
copieFinal.setTime(nextFinalMillis);
}

if (copieStart.after(evenimentDupa) || copieStart.equals(evenimentDupa)) {
return format.format(copieStart);
}

return format.format(copieStart);
}
}

class prog {
public static void main(String[] args) {
EvenimentRecurent er = new EvenimentRecurent("2019-03-09 22:46:00",
"2019-03-09 23:00:00", "Scris probleme", 24);
System.out.println(er.urmatorulEveniment("2019-04-19 22:46:23"));
// 2019-04-20 22:46:00
}
}
Aceasta este bucata de cod pe care trebuie sa lucrez:

class EvenimentRecurent extends Eveniment {
int numarOre;

public EvenimentRecurent(String dataInceput, String dataSfarsit, String nume, int numarOre) {
super(dataInceput, dataSfarsit, nume);
this.numarOre = numarOre;
}

public String urmatorulEveniment(String x) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date evenimentDupa = null;
try {
evenimentDupa = format.parse(x);
} catch (Exception e) {
e.printStackTrace();
}

Date copieStart = new Date(getDataInceput().getTime());
Date copieFinal = new Date(getDataSfarsit().getTime());

while (copieStart.before(evenimentDupa)) {
long nextEventMillis = copieStart.getTime() + (numarOre * 60 * 60 * 1000);
long nextFinalMillis = copieFinal.getTime() + (numarOre * 60 * 60 * 1000);
copieStart.setTime(nextEventMillis);
copieFinal.setTime(nextFinalMillis);
}

if (copieStart.after(evenimentDupa) || copieStart.equals(evenimentDupa)) {
return format.format(copieStart);
}

return format.format(copieStart);
}
}