0

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
4

3 に答える 3

2

文字列比較には == の代わりにequals()メソッドを使用します。as equals は文字列の内容の等価性をチェックし、== はオブジェクトの等価性をチェックします。コードif条件を変更します。

から

    if (x == query)

if (x.equals(query))

文字列の equals と == 比較の違いの詳細については、関連する投稿をご覧ください。

Java String.equals と ==

于 2013-07-07T16:37:42.810 に答える
0

Java で文字列を比較するには、== ではなく .equals() を使用する必要があります。これは、Java では文字列はオブジェクトであり、== はオブジェクト参照を比較するためです。したがって、同じ String オブジェクトを指す 2 つの変数がある場合にのみ真になります。

一方、.equals() はオブジェクト CONTENT を比較するため、文字列の実際の内容を調べ、それらが等しい場合は true を返します。

これは私が言及している行です:

if (x == query)
于 2013-07-07T16:40:21.660 に答える