gpt4 book ai didi

java - 令人难以置信的 Java 相等测试错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:22 26 4
gpt4 key购买 nike

请看代码说说你的看法即使在我的调试器上它也显示 102 == 102 给我 false ...你能想象吗?

import java.util.Arrays;

/**
* Created by Idris on 18/11/14.
*/
public class codingGame {


static boolean exists(int[] ints, int k) {

Integer j = ints[ints.length/2];
if (j.equals(k)){
return true;
}

if (ints.length == 1) return false;


if (k > j ) {
int[] intb = Arrays.copyOfRange(ints, ints.length/2, ints.length);
exists(intb, k);

}

if (k < j ) {
int[] intb = Arrays.copyOfRange(ints, 0, ints.length/2);
exists(intb, k);

}

return false;
}

public static void main (String[] args) {

int[] ints = {-9, 14, 37, 102};
System.out.println(exists(ints, 102)); // true
System.out.println(exists(ints, 36)); // false

}

}

最佳答案

您忘记了您是关于递归的 return 语句。您需要使用return exists(intb, k); 来返回递归内可能出现的true,否则如果j.equals(k),代码将始终返回false > 是错误的。

static boolean exists(int[] ints, int k) {

Integer j = ints[ints.length/2];
if (j.equals(k)){
return true;
}

if (ints.length == 1) return false;


if (k > j ) {
int[] intb = Arrays.copyOfRange(ints, ints.length/2, ints.length);
return exists(intb, k);

}

if (k < j ) {
int[] intb = Arrays.copyOfRange(ints, 0, ints.length/2);
return exists(intb, k);

}

return false;
}

关于java - 令人难以置信的 Java 相等测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27003803/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com