0

所以我的代码没有错误,但由于某种原因,无论数组是否包含它,我的搜索都会返回真实结果

public static void linSrch(String[] names) {
    Scanner inputDevice = new Scanner(System. in );
    System.out.println("Please enter search");
    String search;
    search = inputDevice.nextLine();
    boolean searchReturn;
    for (int index = 0; index < names.length - 1; index++) {
        if (names[index] == search) {
            searchReturn = true;
        }
    }
    if (searchReturn = true) {
        System.out.println(search + " is found in the array.");
    } else {
        System.out.println(search + " not found in the array");
    }
}
4

2 回答 2

2

以下代码

if (searchReturn = true) 

将分配searchReturn为 true 并执行其中的代码。

而不是此代码,您应该将其更改为

if (searchReturn)

searchReturn只要是真的就会运行

还要比较字符串使用equals方法而不是==

于 2015-11-16T00:09:49.150 回答
1

而不是写:

if (names[index] == search) {
    searchReturn = true;
}

你必须写:

if (names[index].equals(search)) {
    searchReturn = true;
}

因为,在非原始数据类型的情况下,==检查内存地址是否相等。

也不能忘记:

if (searchReturn = true) {
    System.out.println(search + " is found in the array.");
} 

改变:

if (searchReturn) {
    System.out.println(search + " is found in the array.");
}

因为,您是在分配而不是检查。

于 2015-11-16T00:10:01.800 回答