Java中字符串的线性搜索

Posted

技术标签:

【中文标题】Java中字符串的线性搜索【英文标题】:Linear search for Strings in Java 【发布时间】:2014-12-14 13:20:14 【问题描述】:

我正在编写一个代码,用户输入十个存储在数组中的字符串和一个搜索键。代码必须根据搜索键运行线性搜索。到目前为止,这就是我所拥有的:

import java.io.*;
class linstring


    String array[] = new String[10];
    String a = new String();
    public void linsearch(String string[], String search)
    
        string = array;
        search = a;

        int i;
        int flag = 0;
        for(i = 0; i<10; i++)
        
            if (search.equals(string[i]))
            
                flag = 1;
                break;
            

        
        if (flag ==1)
        
            System.out.println("Word found at position " +(i+1));
        
        else
        
            System.out.println("Word not found.");
        
    

    public static void main(String args[])throws IOException
    
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        linstring obj = new linstring();
        System.out.println("Enter any 10 words.");

        String enter [] = new String[10];
        int i;
        for (i = 0; i<10; i++)
        

            enter[i] = br.readLine();

        
        System.out.println("Enter word to be searched.");
        String search1 = br.readLine();
        obj.linsearch(enter, search1);
    

未发现编译错误和运行时错误。但是,有一个巨大的逻辑错误。当我搜索数组中存在的元素时,它说搜索不成功。我该如何解决?

【问题讨论】:

除非这是一些家庭作业,否则我建议您忘记原始数组并改用 HashMap/HashSet。速度更快、代码更少、错误更少。 我明白了。好的,我一定会尝试使用 HashMap。谢谢! 【参考方案1】:

删除这些行:

string = array;
search = a;

编辑:这两行将string 的引用设置为空字符串数组(array),将search 的引用设置为空字符串(a)。这意味着stringsearch 现在与arraya 具有相同的内容,为空。

【讨论】:

我意识到他们什么都不做。我删除了它们,它现在就像发条一样工作。谢谢!我将在 9 分钟内将此标记为答案。 @codefoodgirl_99 是的,他们做了某事(这就是您的搜索不起作用的原因)。 哦。我意识到他们做了什么。我删除了它们。谢谢!【参考方案2】:

检查以下行:

string = array;

应该是相反的。

【讨论】:

以上是关于Java中字符串的线性搜索的主要内容,如果未能解决你的问题,请参考以下文章

使用文本文件 C# 进行线性搜索 [重复]

列表数组中的线性搜索

使用数组的简单 Java 英语到法语单词翻译

使用两个字母python进行线性搜索

在字符串数组中搜索特定字符串。 [关闭]

有序数组中的线性搜索 - Java