реализация строки в сопоставимом интерфейсе - PullRequest
0 голосов
/ 26 февраля 2012

Я новичок, и я очень расстроился, потому что постоянно получаю ошибки компилятора.Это домашнее задание, и я должен реализовать класс Comparable для сравнения любых двух объектов String, чтобы он возвращал максимум и минимум.Я продолжаю получать ошибки компилятора, и я точно не знаю, почему я делаю.

public class DataSet implements Comparable
{
   private Object maximum;
   private Object least;
   private int answer;

public int compareTo(Object other)
{
answer = this.getName().compareTo(other.getName());
return answer;

}

public Object getLeast(Object other)
 {
   if(answer<0)
   return this;
   else
   return other;
  }

 public Object getMaximum(Object other)
 {
   if(answer>0)
   return this;
   else
   return other;
 }


}

ошибка метода getName

public interface Comparable
{
    public int compareTo(Object anObject);
}


public class DataSetTester
{
public static void main(String[] args)
{
    DataSet ds = new DataSet();
    String s = "john";
    String a = "bob";
    ds.s.compareTo(a);
    System.out.println("Maximum Word: " + ds.getMaximum());
    System.out.println("Least Word: " + ds.getLeast());

 }
}


incompatible types
    String s = "john";

incompatible types
    String a = "bob";

error: cannot find symbol
    ds.s.compareTo(a);

 error: method getMaximum in class DataSet cannot be applied to given types;
    System.out.println("Maximum Word: " + ds.getMaximum());
error: method getLeast in class DataSet cannot be applied to given types;
    System.out.println("Least Word: " + ds.getLeast());

Ответы [ 3 ]

1 голос
/ 26 февраля 2012

Строка уже реализует Сопоставимый интерфейс, поэтому я не уверен, что именно ваша задача.

answer = this.getName().compareTo(other.getName());

Object не имеет getName()метод.Если вы реализовали это в DataSet, вам нужно изменить тип other или добавить приведение:

answer = this.getName().compareTo(((DataSet)other).getName());

.

incompatible types
    String s = "john";

Это странно.Может быть, вы создали свой собственный класс String?Если это так, вы не можете назначить Java String вашему String

error: cannot find symbol
    ds.s.compareTo(a);

DataSet без поля s.Выражение ds.s недопустимо.

error: method getMaximum in class DataSet cannot be applied to given types;
    System.out.println("Maximum Word: " + ds.getMaximum());

Вам необходимо добавить аргумент к getMaximum() например getMaximum(null).Или удалите аргумент из объявления метода.

0 голосов
/ 26 февраля 2012

Вы уверены, что вас попросили внедрить Comparable или Comparator?Строки уже реализуют Comparable и выдают int, если вы вызываете

String firstString = "AAA";
int compareToValue = firstString.compareTo("BBB");

. Компаратор имеет подпись

int compare(Object o1, Object o2)
0 голосов
/ 26 февраля 2012

Методы объявлены, поэтому они получают Объект .

Так что, когда вы пытаетесь использовать getMaximum() (без параметров), он не находит метод в классе.

...