我有
public int compareTo(Object other)
{
}
我需要能够比较两组不同的数字和相应位置的数字。 例如:
Time t1 = new Time(17, 12);
System.out.println(t1);
Time t2 = new Time(9, 45);
System.out.println(t2);
System.out.println("Greater Than:");
System.out.println(t1.compareTo(t2));
输出将是
1712
0945
Greater Than:
1
在时间类中,第一个数字是小时,第二个数字是分钟。我需要帮助比较这两个数字。
我的时间班使用
public Time (int y, int x) { minute = x; hour = y; if (minute>59 || minute<0) { minute = 0; } if (hour>=24 || hour<0) { hour=0; }
}
我如何将两个新时间对象相互比较?
答案 0 :(得分:1)
首先使用正确的通用类型实现Comparable
接口,例如Comparable<Time>
然后,您就可以访问其他对象的属性。
您的方法现在看起来像这样:
public int compareTo(Time otherTime)
{
//... compare things here... like:
return hour.compareTo(otherTime.getHour());
}
这是一个示例,您必须自己实现比较逻辑,因为我不知道这是否是一项任务。
答案 1 :(得分:1)
逻辑没有技术。当你面对17:12时,口头告诉我们你是如何做出比较的。 09:45。如果你能够系统地说出来,那么把它写成代码应该没有问题。
我可以理解你可能是编程中的新手,你甚至不知道编写最简单的代码行。然而在编程世界中,没有人会抓住你的手来写你。你应该试着自己解决它。
我不会直接给你答案。但是,这是类似问题的一个小例子。假设有一个这样的评分系统,其中A1 < A2 < A3 ... < An < B1 < B2 < B3... < C1....
我要做的比较是,首先我将比较字母表部分,如果grade1的字母表大于/小于grade2的字母表,我将不需要关心数字部分,我可以返回-1 / 1根据字母表更小/更大。如果字母表是相同的,那么我需要比较数字部分,并根据结果返回1,-1和0。
然后代码看起来像(半假的代码)
public class Grade implements Comparable {
char level; // A,B,C,D
int sublevel; // 1,2,3,4
// ctor, getters/setters etc
@Override
public int compareTo(Grade other) {
// compare the alphabet part
if (this.level < other.level) {
return -1;
} else if (this.level > other.level) {
return 1;
}
// alphabet not larger or smaller, that means equals
// compare the number part
if (this.sublevel< other.sublevel) {
return -1;
} else if (this.sublevel> other.sublevel) {
return 1;
} else { // alphabet and number part are all equals
return 0;
}
}
}
如果您能够理解这里发生的事情,那么实施您的问题应该没有问题。 (当然,有更简洁,更清晰的方式来实现这一点。但我认为你需要的是先学习基础知识)
答案 2 :(得分:0)
所以你的课是时间,我假设它有2个变量,一个用于分钟,一个用于秒。您需要比较的是t1.minutes到t2.minutes和t1.seconds到t2.seconds。但是,您的代码缺少很多部分,它无法帮助我们正确回答您的问题。
答案 3 :(得分:0)
您可以在Time类上使用比较器接口。 Doc:http://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html
网上应该有很多例子。