Професионална програма
Loading...
+ Нов въпрос
Xcal1bur avatar Xcal1bur 1 Точки

Задача от стар изпит, Java

Здравейте, ще пробвам и тук. да потърся помощ за проблема с тази задача:

Задачата е тази:

https://judge.softuni.bg/Contests/Practice/Index/1392?fbclid=IwAR0owkyxD0QJO4pAalY7Jha_6hzDC1C3oL4ALpizOvlbXB73Oy4ZHjkC6Cs#0

Решението ми:

https://pastebin.com/gpFWwBz0?fbclid=IwAR3VeDgzebLI9J_4dwhkFQeLH7ETyTXOqfTUQs0bflBjs54oCBy0P_y1cCQ

Получавам 60% от джъдж, а нямам идея кое не работи, тъй като всичко изглежда ок, а тестовете на системата както винаги са скрити....

 

 

Тагове:
0
Module: Java Advanced
KaloyanStoyanovvv avatar KaloyanStoyanovvv 66 Точки

Имаш една грешка на 68-ми ред при сравнението на стойностите в 'sorted' (направи го с 'equals()' -> 'if (!a.getValue().equals(b.getValue()))' , защото 'compareTo' метода работи със стрингове) и така качваш още 20 точки, останалите 20 точки ги помъчи още малко, ако искаш може да разгледаш това мое решение за референция https://pastebin.com/yVY0eKei .

 

0
01/12/2019 14:53:27
Xcal1bur avatar Xcal1bur 1 Точки

Здравей, нещо не те разбрах. На 68-ми ред сравнявам интове. Стринговете(ключовете на мапа) ги сравнявам на 66-ти ред, обаче там като заменя comparoTo с equals() ми светва червено. Както виждам и в твоето решение сравняваш ключовете(стрингове) с compare...

0
KaloyanStoyanovvv avatar KaloyanStoyanovvv 66 Точки

В случая на 68 ред сравняваш 'Integer', 'Integer-ите' са обекти, обектите се сравняват с 'equals()' метода, така ти сравняваш обектите от тип:

Integer value = a.getValue();
Integer value2 = b.getValue();

 по референция в паметта (референцията в паметта почти никога не е една и съща), а не по самата стойност на обекта затова и трябва да използваш 'equals()'.

В моето решение сравнявам ключовете от тип 'String' с 'compareTo':

int sort = Integer.compare(e2.getValue(), e1.getValue());

                if (sort == 0) {

                       sort = e1.getKey().compareTo(e2.getKey());

                 return sort;

0
01/12/2019 14:54:21