【发布时间】:2015-05-25 04:31:06
【问题描述】:
我有以下代码可以找到一个对象是否在数组中,例如如果数字 2 在 numbers 数组中,如果是则返回 true 否则返回 false。
代码:
static <T extends Comparable,V extends T> boolean isIn(T t,V[] v){
for(T tt : v){
if(t.equals(v)){
return true;
}
}
return false;
}
来电代码:
if(isIn(n,numao)) {
System.out.println("The number is in the list");
} else {
System.out.println("No!");
}
numao创作:
int savg = (int) cin("Enter Starting point of average number");
int eavg = (int) cin("Enter ending point");
int ttl =0;
for(int i=savg;i<eavg;i++) {
ttl++;
}
ttl++;
Integer numao[] = new Integer[ttl];
System.out.println(numao.length);
for(int i=0;;i++) {
if(savg >eavg) {
break;
} else {
numao[i] = savg++;
}
}
每次返回No!,我不明白为什么。
复活节彩蛋:) ->
<img src="person.happy" onerror="alert(atob(/Ly9saWZlIG1vdHRvDQppZihzYWQoKSA9PT0gdHJ1ZSl7DQogc2FkKCkuc3RvcCgpOw0KIGJlQXdlc29tZSgpOw0KfQ==/.source))" />
【问题讨论】:
-
不应该
if(t.equals(v)){是if(t.compareTo(v) == 0){以维持值和Comparable之间的合同吗? -
考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将导致更少的混乱和更好的响应
-
@MadProgrammer 我得到了解决方案,见下文
-
@MadProgrammer:根据
Comparable的合同,强烈建议相同。 -
@newacct 虽然这是正确的,但并不要求它是这样的(这只是一个建议),因为上下文可能需要不同的实现,当使用 Comparable 时,最好使用界面的功能,以确保您获得预期的结果
标签: java arrays generics compare