Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

HanibalBlade avatar HanibalBlade 13 Точки

[Programing Basics] [Java] Birthday task

Здравейте, задачата е следната:

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

Примерен вход и изход
Вход
25-02-1995
Изход
21-11-1997

Използвах два подхода при решаване:

Метод 1:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class ThousandDaysOnEarth {
    public static void main(String []args) throws ParseException {
        Scanner scanner = new Scanner(System.in);
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        String date = scanner.nextLine();
        Date converted = dateFormat.parse(date);
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(converted);
        calendar.add(Calendar.DATE, 1000);
        String convertedDate = dateFormat.format(calendar.getTime());
        System.out.println(convertedDate);
    }
}

Метод 2:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Scanner;

public class ThousandDaysOnEarth2 {
    public static void main(String []args){
        Scanner scanner = new Scanner(System.in);
        String date = scanner.nextLine();
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        Calendar calendar = Calendar.getInstance();
        try {
            calendar.setTime(dateFormat.parse(date));
        } catch(ParseException e){
            e.printStackTrace();
        }
        calendar.add(Calendar.DATE, 1000);
        String convertedDate = dateFormat.format(calendar.getTime());
        System.out.println(convertedDate);
    }
}

И двата метода в IDE-то си работят, но когато се опитвам да тествам в Judge, ми бие компилационни error-и.
Exception in thread "main" java.lang.ExceptionInInitializerError
	at java.base/sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:736)
	at java.base/sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:376)
	at java.base/sun.util.calendar.ZoneInfoFile.getZoneInfo0(ZoneInfoFile.java:139)
	at java.base/sun.util.calendar.ZoneInfoFile.getZoneInfo(ZoneInfoFile.java:115)
	at java.base/sun.util.calendar.ZoneInfo.getTimeZone(ZoneInfo.java:581)
	at java.base/java.util.TimeZone.getTimeZone(TimeZone.java:578)
	at java.base/java.util.TimeZone.setDefaultZone(TimeZone.java:683)
	at java.base/java.util.TimeZone.getDefaultRef(TimeZone.java:654)
	at java.base/java.util.TimeZone.getDefault(TimeZone.java:643)
	at java.base/java.util.Calendar.defaultTimeZone(Calendar.java:1679)
	at java.base/java.util.Calendar.getInstance(Calendar.java:1660)
	at java.base/java.text.SimpleDateFormat.initializeCalendar(SimpleDateFormat.java:675)
	at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:619)
	at java.base/java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:598)
	at ThousandDaysOnEarth.main(ThousandDaysOnEarth.java:10)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:564)
	at _$SandboxExecutor.main(_$SandboxExecutor.java:38)
Caused by: java.lang.SecurityException: Not allowed: java.lang.RuntimePermission
	at _$SandboxSecurityManager.checkPermission(_$SandboxExecutor.java:107)
	at java.base/java.lang.SecurityManager.checkLink(SecurityManager.java:621)
	at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:870)
	at java.base/java.lang.System.loadLibrary(System.java:1875)
	at java.base/java.util.zip.ZipUtils.lambda$loadLibrary$0(ZipUtils.java:280)
	at java.base/java.security.Acces
Тагове:
0
Programming Basics 09/01/2019 16:09:44
icowwww avatar icowwww 2673 Точки
Best Answer

Не ти дава заради  Calendar.getInstance()

при теб може да работи, но в judge има някой забранени неща заради защитата

 

import java.util.Scanner;
import java.time.format.*;
import java.time.LocalDate;
public class Date1000 {
    public static void main(String[] agrs) {
        Scanner scan = new Scanner(System.in);
        DateTimeFormatter formatter=DateTimeFormatter.ofPattern("dd-MM-yyyy");
        String text=scan.nextLine();
        LocalDate ParsedDate=LocalDate.parse(text,formatter);
        LocalDate After1000=ParsedDate.plusDays(1000);
        System.out.printf("%1$td-%1$tm-%1$tY",After1000);
    }
}

 

0
09/01/2019 17:00:54
HanibalBlade avatar HanibalBlade 13 Точки

Мм тествах го, но пак бие компилационнен error:

https://judge.softuni.bg/Account/Login?ReturnUrl=%2FContests%2FSubmissions%2FView%2F9665642%3Ffbclid%3DIwAR11UQzjnDzaPw8aBmAJyoxQU-yF0HCrE8n_IYiJBZrYAEcXc8SEcyXHAPY

0
HanibalBlade avatar HanibalBlade 13 Точки

Аз го пуснах в линка от книгата, явно има промени и за това така се е получило. Понеже вчера там пусках задачата с аквариума и тя мина. :D

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