ParseException check / try - catch blokk

Ez a téma lezárásra került a moderátor által. A lezárás oka: Van már ilyen témád, ami ráadásul meg is oldódott, hisz' fogadtál el megoldást. Értsd: próbálj meg normális, a problémát jól körülíró címet adni a témádnak!
ParseException check / try - catch blokk
2021-02-19T19:40:27+01:00
2021-02-19T19:40:39+01:00
2022-07-19T01:21:20+02:00
CyberBot1111
Sziasztok!


Azt a feladatot kaptam, hogy írjak egy munkanapszámláló programot. Egyik feltétele a feladatnak a try catch blokk használata a kódban, mégpedig a formátum ellenőrzésére. A probléma ezzel csak annyi, hogy ha a user nem a dátumot, hanem egy "-" jelet ír be, akkor azzal a parse el is száll, viszont a feladat szerint ez annak a jele kéne legyen, hogy nincs több dátum, amit be kellene kérnünk. Kérdésem az lenne, hogy lehet-e kivételt írni a parsnek, hogy ha kötőjelet érzékel ne szálljon el?

Példa a feladatra: 

"Melyik az évközbeni szünet első napja? (yyyy.MM.dd. formátumban, - jel, ha nincs több.)"

Kódom:

public static void main(String[] args) { //checking the format of the input try { int counter = 0; Scanner sc = new Scanner(System.in); int workDays = 0; System.out.print("Melyik a nyári vakáció első napja? (yyyy.MM.dd. formátumban) "); String input = sc.nextLine(); //Date for now Date now = new Date(); Calendar nowCal = Calendar.getInstance(); nowCal.setTime(now); Calendar holidayCalendar = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); Date inputDate = sdf.parse(input); holidayCalendar.setTime(inputDate); long difference = inputDate.getTime() - now.getTime(); double daysBetween = difference / (1000 * 60 * 60 * 24); //get workingdays until holiday do { nowCal.add(Calendar.DAY_OF_MONTH, 1); if (nowCal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && nowCal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { workDays++; } } while (nowCal.getTimeInMillis() < holidayCalendar.getTimeInMillis()); System.out.println("Évközi szünetek felvitele:"); do { System.out.print("Melyik az évközbeni szünet első napja? (yyyy.MM.dd. formátumban, - jel, ha nincs több.) "); String firstFree = sc.nextLine(); Date firstFreeDate = sdf.parse(firstFree); if (firstFree.equals("-")) { counter++; } else { System.out.print("Melyik az évközbeni szünet utolsó napja? (yyyy.MM.dd. formátumban) "); String lastFree = sc.nextLine(); Date lastFreeDate = sdf.parse(lastFree); long differenceSecond = lastFreeDate.getTime() - firstFreeDate.getTime(); double daysBetweenSecond = differenceSecond / (1000 * 60 * 60 * 24); } } while (counter == 0); } catch (ParseException ex) { System.out.println("Nem megfelelő formátum."); } } }
Nagyon szépen köszönöm előre is.
Mutasd a teljes hozzászólást!

Ez a téma lezárásra került a moderátor által. A lezárás oka: Van már ilyen témád, ami ráadásul meg is oldódott, hisz' fogadtál el megoldást. Értsd: próbálj meg normális, a problémát jól körülíró címet adni a témádnak!
abcd