Loading...
disturbed avatar disturbed 4 Точки

Пресмятане с дати: 1000 дни на Земята Java

Здравейте, аз съм от онлайн обучението по Java и вече втори ден се боря с тази задачата. Търсих из форума, но не намерих решение. Измъдрих нещо, в еклипса върви, но в judge гърми. Ако може някои и друг съвет.

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

* Подсказки: потърсете информация за класа LocalDate в Java и по-конкретно разгледайте методите LocalDate.parse(String), plusDays(count) и format(DateTimeFormatter). С тяхна помощ може да решите задачата, без да е необходимо да изчислявате дни, месеци и високосни години.

вход

изход

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

 

А това ми е решението:

import java.util.Scanner;
import java.time.format.*;
import java.time.LocalDate;

public class DaysAfterBirth  {
    
    public static void main(String[] agruments) {
    Scanner input = new Scanner(System.in);
    
      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd MM yyyy");
      
      String text = input.nextLine();
      LocalDate parsedDate = LocalDate.parse(text, formatter);
      LocalDate after1K = parsedDate.plusDays(1000);
      System.out.printf("%1$td-%1$tm-%1$tY", after1K);
    
        }
}

0
Module: Java Advanced 27/01/2017 12:44:54
vancho avatar vancho 430 Точки

Предполагам, че гърми заради форматирането при принтирането. Не се пише така и предполагам, че това не му харесва на judge.....Тествах ти задачата ама не работи при мен. Незнам как така при теб работи.

Ето код, който е рабтещ;

Scanner input = new Scanner(System.in);

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");

String text = input.nextLine();

Date date = null;
try {
    date = sdf.parse(text);
    
} catch (ParseException e) {
    e.printStackTrace();
}

Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, 999);

System.out.println(sdf.format(calendar.getTime()));
1
27/01/2017 13:35:10
disturbed avatar disturbed 4 Точки

Мерси за помоща. Гърми понеже въвеждам датата без тиренца. Не успях да го оправя.

0
vancho avatar vancho 430 Точки

В патърна дата не ти е с тиренца. Сложи тиренца.

1
kianev avatar kianev 4 Точки

Здрасти, и при мен гърмеше, защото при LocalDate задавах 1000 и пресмяташе 1 ден повече, промени го на 999

 LocalDate after1K = parsedDate.plusDays(999);

После на входа имаш дата в този формат 25-02-1995, съответно форматираш така:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");

Изходът при мен е така и работи:

System.out.println(after1K.format(formatter));

Успех.

0
disturbed avatar disturbed 4 Точки

Супер, и моя вариант тръгна накрая, след малко едит. 

Благодаря :)

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