【问题标题】:How to search in java? [closed]如何在java中进行搜索? [关闭]
【发布时间】:2014-03-10 13:58:03
【问题描述】:

我们被要求创建一个能够添加、编辑和搜索数据的学生和教师目录。在搜索部分,我的老师要求输出将显示与搜索中的输入匹配的所有结果。

样本输出:

search name: ab

output: 
1. **ab**a, josep jr v.   [IV - Garent]
2. **ab**acada, willie f.   [III - Waling2x]
3. **ab**zal, louie b.   [i - Mercury]


Press the number for details. Zero(0) back to the menu.
Press you choice: 

如何使用这样的输出进行搜索?

我已经有了

public void search(){
    System.out.print("search name : ");

    try {
        searchName = reader.readLine();
    } catch (IOException e) {
        e.printStackTrace();
    } 


    searchCount = 0;//for search

    for(int i = 0; i<count; i++){

        if(personList.get(i).getName().equals(searchName)){//for search
            searchCount = i;
            break;
        }

    }

    System.out.println(personList.get(searchCount).getName() +" "+ personList.get(searchCount).getAge());

}

String searchName = "";//for search, store search name
int searchCount = 0;//for search

【问题讨论】:

  • 使用contains 代替equals 进行搜索

标签: java search directory find


【解决方案1】:

当你搜索 count = i;您应该将找到的对象保存在列表中,然后打印出列表,或者直接打印出项目。

    for(int i = 0; i<personList.size(); i++){
        if(personList.get(i).getName().contains(searchName)){
            System.out.println(personList.get(i).getName() +" "+ personList.get(i).getAge());
        }
    }

    List<person> resultSet = new ArrayList<person>();
    for(int i = 0; i<personList.size(); i++){
        if(personList.get(i).getName().contains(searchName)){
            resultSet.add((personList.get(i))
        }
    }

    for(int i = 0; i<resultSet.size(); i++){
        System.out.println((i+1) + ". " + resultSet.get(i).getName() +" "+ resultSet.get(i).getAge());
    }

【讨论】:

  • 如果它像这样的示例输出会怎样:搜索名称:cruz 输出:1. cruz, rafael f. [III - Waling2x] 2. cruztana,嫁给 b。 [i - Mercury] 3. dela cruz, rofina p. [IV - 加伦特]
  • 创建此示例输出有什么问题?我可以给你一个例子,但我不知道你需要什么方法来获取你想要打印的信息
  • 用户搜索了单词“cruz”,然后有一个名称包含两个单词(dela cruz)。该名称应该显示在搜索中,因为第二个单词与单词“cruz”匹配跨度>
  • 这将起作用,因为 contains 检查字符串是否包含另一个字符串。 "abcd".contains("bc") -> true
  • 我明白了。谢谢你这么有帮助。哦!还有一件事,一旦您搜索了一个名称,是否可以编辑或更新该特定名称下的信息?
【解决方案2】:

使用String#contains(String) 代替String#equals(Object)

【讨论】:

    【解决方案3】:

    将这行代码更改为::

             if(personList.get(i).getName().contains(searchName)){
                //for search
    

    当且仅当此字符串包含指定的 char 值序列时,java.lang.String.contains() 方法才返回 true。

    String.equals 将字符串与指定对象进行比较。当且仅当参数不为 null 并且是表示与此对象相同的字符序列的 String 对象时,结果才为真。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多