Софтуерно Инженерство
Loading...
+ Нов въпрос
HanibalBlade avatar HanibalBlade 6 Точки

[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
Основи на програмирането 09/01/2019 16:09:44
icowwww avatar icowwww 946 Точки
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 6 Точки

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

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

0
HanibalBlade avatar HanibalBlade 6 Точки

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

0