Я очень застревают на проекте, до сих пор я получил:Сопоставимые интерфейс проекта
public class MyInt implements Comparable<MyInt> {
private int value;
MyInt(int x) {
value = x;
}
public String toString() {
return ("" + value);
}
public int intValue() {
return value;
}
public int compareTo(MyInt rhs) {
MyInt myInt = (MyInt) rhs;
int myInteger = myInt.intValue();
int result = 0;
if (value < myInteger) {
result = -1;
} else if (value == myInteger) {
result = 0;
} else {
result = +1;
}
return result;
}
}
И это вопрос: Рассмотрим следующий интерфейс Java библиотеки:
public interface Comparable<T> {
int compareTo(T rhs);
}
Complete реализация нижеприведенного класса реализует вышеуказанный интерфейс (обратите внимание, что этот интерфейс автоматически импортируется java - НЕ повторно введите его в свой проект). Метод compareTo должен возвращать -1, если значение меньше значения rh.value, 0, если обе стороны равны и +1, если значение больше, чем значение rh.value. ?
public class MyInt implements Comparable<MyInt> {
private int value;
MyInt(int x) {...}
public String toString() {...}
public int intValue() {...}
public int compareTo(MyInt rhs){...}
}
Теперь мне нужно реализовать сравнимый интерфейс в другом классе, который выполняет основные арифметические действия с рациональными числами, было бы лучше использовать наследование для достижения этой цели Класс:
public class Rational {
private int num;
private int denom;
public Rational() {
this(0,1);
}
public Rational(int num, int denom) {
this.num = num;
this.denom = denom;
}
int getNum() {
return num;
}
int getDenom() {
return denom;
}
public Rational add(Rational rhs) {
return new Rational(num * rhs.denom + rhs.num * denom, denom * rhs.denom);
}
public Rational subtract(Rational rhs) {
return new Rational(num * rhs.denom - rhs.num * denom, denom * rhs.denom);
}
public Rational multiply(Rational rhs) {
return new Rational(num * rhs.num, denom * rhs.denom);
}
public Rational divide(Rational rhs) {
return new Rational(num * rhs.denom, denom * rhs.num);
}
public String toString() {
String result;
if (num == 0)
result = "0";
else if (denom == 1)
result = num + "";
else
result = num + "/" + denom;
return result;
}
public static void main(String[] args) {
Rational r1 = new Rational(1, 2); // 1/2
Rational r2 = new Rational(3, 4);// 3/4
Rational result = new Rational();
result = r1.add(r2);
System.out.println(result);
Rational result1 = new Rational();
result1 = r1.subtract(r2);
System.out.println(result1);
Rational result2 = new Rational();
result2 = r1.multiply(r2);
System.out.println(result2);
Rational result3 = new Rational();
result3 = r1.divide(r2);
System.out.println(result3);
}
}
Ух ... Да, вам нужно сравнить значения и вернуть -1, 0 или 1, как вы сказали. Что именно вы не понимаете, что вам нужно делать? – azurefrog
Сначала вам нужно спросить себя: 1) получить экземпляр 'MyInt'« rhs », как мне получить числовое значение (int)? 2) как получить одно и то же 'значение' изнутри экземпляра (в методе' MyInt') 3) как мне сравнить 'int'? – pyb
В качестве побочного примечания: я вижу, что это часть вашей спецификации, чтобы явно возвращать 0, -1 или 1; при нормальных обстоятельствах при работе с объектами 'Comparable' не принимайте само собой разумеющееся число будет равно 1 или -1. Контракт требует только, чтобы * некоторое * отрицательное или положительное целое значение, или ноль, будет возвращено. Итак, ваши проверки должны быть '<', '>' или '==' до 0. –
ChiefTwoPencils