java - 使用 Scanner.nextLine() 从输入(键盘)读取

标签 java search

我正在使用 Java 实现顺序搜索。 我正在尝试从字符串数组中搜索字符串。使用 nextLine() 从键盘获取查询。然而,即使字符串清楚地在列表中,我总是得到“未找到”。

/**
   Implementing sequential search
*/
public class SequentialSearch {
    public static boolean sequentialSearch(String[] names, String query) { //static method takes a string array and the query as arguments
        for (String x: names) //traverse the list
            if (x == query) {
                System.out.println("found");
                return true;
            } //end if
        System.out.println("not found"); //end for
        return false;
    } //end method
} //end class

class TestSequentialSearch {
    public static void main (String[] args) {
        String[] names = {"John", "Amy", "Tom", "Jay", "Olivia", "Jack", "Peter", "Emma"}; //a new name list
        Scanner in = new Scanner(System.in);
        String x;
        System.out.println(Arrays.toString(names));
        System.out.println("name to be searched: ");
        while (in.hasNextLine()) {
            x = in.nextLine();
            SequentialSearch.sequentialSearch(names, x); //search input in the list
            System.out.println("name to be searched: ");
        } //end while
    } //end main
} //end test

最佳答案

使用equals()方法而不是 == 进行字符串比较。 as equals 检查字符串内容是否相等,而 == 检查对象是否相等。更改代码 if 条件:

来自

    if (x == query)

if (x.equals(query))

从此处的相关文章中了解有关字符串的 equals 和 == 比较之间的区别的更多信息:

Java String.equals versus ==

关于java - 使用 Scanner.nextLine() 从输入(键盘)读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17514013/

相关文章:

java - 在java中对数组的ArrayList进行排序

java - JPA 在多对多关系中按列排序

java - Android 应用程序在替换 fragment : 后崩溃

android - 在不使用可搜索 Activity 的情况下实现搜索栏

c++ - 斐波那契数列,二分查找

search - 使用 Solr 进行类似亚马逊的搜索

java - 如何修复 ListView 中的搜索栏功能?

java - React Native - java.lang.RuntimeException : SDK location not found. 在 local.properties 中使用 sdk.dir 定义位置

java - hibernate - 进程范围的身份

javascript - 正则表达式忽略括在(括号)中的字符串值;并在清除输入框时删除标记