Loading...

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

Olegati avatar Olegati 7 Точки

Java Advanced - Comparable Book 80/100

Здравейте, 

На 3-та задача от лекцията Iterators and Comparators от Java Advanced ми гърми един тест в Judge. Нямам идея защо, тъй като задачата я има решена по същия начин и в лекцията и в презентацията.

Book Class-a -> https://pastebin.com/1h6LAXg9

Линк към задачата в Judge -> https://judge.softuni.org/Contests/Practice/Index/1542#2


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

Expand Book by implementing Comparable<Book>

Book have to be compared by title. When title is equal, compare them by year.

Expand Book from UML diagram below:

<<Comparable<Book>>>

Book

-

title: String

-

year: int

-

authors: List<String>

-

setTitle(String)

-

setYear(String)

-

setAuthors(String…)

+

getTitle(): String

+

getYear(): int

+

getAuthors(): List<String>

+

compareTo(Book): int

You can use only one constructor. There can be no authors, one author or many authors.

Examples

Main.java

public static void main(String[] args) {
Book bookOne = new Book("Animal Farm", 2003, "George Orwell");
Book bookThree = new Book("The Documents in the Case", 2002);
Book bookTwo = new Book("The Documents in the Case", 1930, "Dorothy Sayers", "Robert Eustace");

if (bookOne.compareTo(bookTwo) > 0) {
    System.out.println(String.format("%s is before %s", bookOne, bookTwo));
} else if (bookOne.compareTo(bookTwo) < 0) {
    System.out.println(String.format("%s is before %s", bookTwo, bookOne));
} else {
    System.out.println("Book are equal");
}

}

Тагове:
0
Java Advanced
svephoto avatar svephoto 1191 Точки

Здравей, Olegati,

 

Ако искаш, разгледай моя вариант за метода compareTo(), по този начин минава със 100/100:

 

@Override
public int compareTo(Book otherBook) {
    if (this.getTitle().compareTo(otherBook.getTitle()) > 0) {
        return 1;
    } else if (this.getTitle().compareTo(otherBook.getTitle()) < 0) {
        return -1;
    } else {
        if (this.getYear() > otherBook.getYear()) {
            return 1;
        } else if (this.getYear() < otherBook.getYear()) {
            return -1;
        }

        return 0;
    }
}
0
Olegati avatar Olegati 7 Точки

Здравей, 

Странно, но пак резултатът е 80/100. Явно е другаде грешката, продължавам да търся.

0
svephoto avatar svephoto 1191 Точки

Виж дали пък не може да е от сетъра за авторите, ето моя, като всъщност така е показан и в условието:

 

private void setAuthors(String... authors) {
    if (authors.length == 0) {
        this.authors = new ArrayList<>();
    } else {
        this.authors = new ArrayList<>(Arrays.asList(authors));
    }
}

 

И да не би да трябва да подадеш "authors" в конструктора вместо "args"? Нямам представа дали тестът търси и това.

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