Loading...
fedele avatar fedele 7 Точки

задача 1000 Days after Birth

Здравейте,

накой може ли да ми каже къде греша.

package SimpleCalculations;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Scanner;

public class DaysAfterBirth {
    public static void main(String[] args) {
        DateTimeFormatter f=DateTimeFormatter.ofPattern("dd-mm-yyyy");
        Scanner scan = new Scanner(System.in);
        LocalDate d = LocalDate.parse(scan.nextLine(),f);
        LocalDate d1 = d.plusDays(1000);
        System.out.println(d1.format(f));
    }
}

условието на задачата е:

Напишете програма, която въвежда рождена дата във формат “dd-MM-yyyy” и пресмята датата, на която се навършват 1000 дни от тази рождена дата и я отпечатва в същия формат.

Примерен вход и изход:

вход

Изход

25-02-1995

20-11-1997

07-11-2003

02-08-2006

30-12-2002

24-09-2005

01-01-2012

26-09-2014

14-06-1980

10-03-1983

0
Module: Java Advanced
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

сложи 999 и ще мине,поради начина които работи datetime сега превърташ дата с 1 ден и ти дава грешка 

0
fedele avatar fedele 7 Точки

Не минава. Проблемът е по-сериозен. Излиза следното съобщение:


12-03-2009
Exception in thread "main" java.time.format.DateTimeParseException: Text '12-03-2009' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=12, Year=2009, MinuteOfHour=3},ISO of type java.time.format.Parsed
    at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1920)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1855)
    at java.time.LocalDate.parse(LocalDate.java:400)
    at SimpleCalculations.DaysAfterBirth.main(DaysAfterBirth.java:12)
Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {DayOfMonth=12, Year=2009, MinuteOfHour=3},ISO of type java.time.format.Parsed
    at java.time.LocalDate.from(LocalDate.java:368)
    at java.time.format.Parsed.query(Parsed.java:226)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
    ... 2 more

Process finished with exit code 1

 

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

значи колегата е дал допълнителните неща аз нарочно не го направих. 

https://www.tutorialspoint.com/java/java_date_time.htm - тук е обяснено какво е клас време в java и за форматирането му. Гледам че се появиха няколко подобни теми за java и php. Затова на кратко времето си има специален вграден клас в всеки език, и когато се работи с него този клас трябва да се извика,и подаде формата които се използва. Примерно дали ще е нашето +2gmt време. Или гринуч времевата зона. + допълни неща като дали да изписва 4ас-мин-сек или ден-час-мин-сек... Възможностите са безкрайни.Явно е било изпуснато на басик лекций или споменато между другото.

 а иначе +999 вместо 1000 си работи,но с малкото допъление на колегата,зад което стоят тези неща описани по-горе.

0
KeepCoding avatar KeepCoding 554 Точки

Трябва форматът да е "dd-MM-yyyy"

Също така трябва последният ред да е 

System.out.println(f.format(d1));

 

0
fedele avatar fedele 7 Точки

Благодаря за корекциите! Вече работи:

public class DaysAfterBirth {
    public static void main(String[] args) {
        DateTimeFormatter f=DateTimeFormatter.ofPattern("dd-MM-yyyy");
        Scanner scan = new Scanner(System.in);
        LocalDate d = LocalDate.parse(scan.nextLine(),f);
        LocalDate d1 = d.plusDays(999);
        System.out.println(f.format(d1));
    }
}
0
Betov91 avatar Betov91 0 Точки

Аз съм решил задачата по същия начин, но judge не я приема. Изписва ми, че съм нарушил лимит времето. Тоест много време отнема за да изпълни програмата. Но не се сещам за друг начин? При теб judge приема ли решението? 

0
fedele avatar fedele 7 Точки

Judge прие решенито 100/100

0
German40 avatar German40 15 Точки

Превърташ date time - сложи 999

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.