2012-02-26 2 views
0

Я новичок-кодер, и я очень расстраивался, потому что продолжаю получать ошибки компилятора. Это домашнее задание, и я предполагаю, что это реализовать класс 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()); 
+0

Я думаю, вы не поняли задание. Comparable - это интерфейс, содержащий метод compareTo() ', который возвращает -1, 0 или +1, если объект' this' «меньше», «равно» или «больше» некоторого другого объекта. Он не находит максимума или минимума. То, как вы описали назначение, не имеет смысла. –

ответ

1

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

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

Методы объявляются таким образом они получают объект.

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

0

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

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

компаратор имеет подпись

int compare(Object o1, Object o2) 
Смежные вопросы