【问题标题】:Java Compare Numbers errorJava比较数字错误
【发布时间】:2015-05-25 04:31:06
【问题描述】:

我有以下代码可以找到一个对象是否在数组中,例如如果数字 2numbers 数组中,如果是则返回 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


【解决方案1】:

对不起,我自己想出来的!

代码块'1'中的行

if(t.equals(v)){ 必须是if(t.equals(tt)){

因为它的变量tt 不是循环的v

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多