Странная ошибка в моем классе Comparator, затмение вызывает его синтаксис, но синтаксис кажется правильным - PullRequest
0 голосов
/ 28 сентября 2019

Я получаю странную синтаксическую ошибку в классе компаратора, который загружает названия песен и сортирует их лексикографически.Синтаксис на первый взгляд правильный, но я не уверен в том, что происходит, поскольку Eclipse выдает мне эту ошибку:

Несколько маркеров в этой строке

  • Синтаксическая ошибка на токене ",",(ожидается
  • Синтаксическая ошибка на токене "(", {ожидается
  • Синтаксическая ошибка, введите "}" для завершения. Блок
  • Синтаксическая ошибка, введите ";" для завершения ClassBodyDeclarations
  • Синтаксическая ошибка на токене ",", (ожидается
  • Синтаксическая ошибка, вставьте ";" для завершения ClassBodyDeclarations
  • Синтаксическая ошибка, введите "}" для завершения Block
  • Точка останова: SongComparator

Я не очень много пытался это исправить, я не могу сказать, с чего начать. Приезжая сюда в надежде получить небольшое представление о проблеме.

Вот мой код:

package cmsc256;

import bridges.data_src_dependent.Song;
import bridges.connect.DataFormatter;
import java.util.Comparator;

public class SongComparator implements Comparator<Song>(Song o1, Song o2) {

    public int compare(Song o1, Song o2) {

        Song placeHolder;

        if (o1.compareTo(o2) > 1) {
            //do nothing
        }
        else if(o1.compareTo(o2) == 0) {
            //do nothing
        }
        else if (o1.compareTo(o2) < 1) {
            o1 = placeHolder;
            o1 = o2;
            o2 = placeHolder;
        }
    }

    public String getSongsByArtist(String artist) {
        return "";
    }

}

Ошибка возникает при объявлении класса, особенно в параметрах. Обе скобки, открытая скобка и запятая, разделяющие параметры, подчеркнуты.

1 Ответ

1 голос
/ 28 сентября 2019

У вас есть как минимум три проблемы:

  1. Вы ничего не возвращаете в своем compare методе
  2. public class SongComparator implements Comparator<Song>(Song o1, Song o2) { должно быть просто public class SongComparator implements Comparator<Song> {
  3. Вам нужно инициализировать placeHolder, прежде чем вы сможете присвоить ее другой переменной
  4. (Потенциально): вы можете compareTo вызвать * Song, только если этот класс реализует ее (обычно путем реализации Comparableинтерфейс).Но тогда вам, вероятно, не нужно будет писать пользовательский SongComparator.

Вот некоторый скелетный код, с которого можно начать:

class SongComparator implements Comparator<Song> {

    public int compare(Song o1, Song o2) {
        // Implement your comparison logic here
        return o1.toString().compareTo(o2.toString());
    }

    public String getSongsByArtist(String artist) {
        return "";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...