【问题标题】:Sequential String search in Java [duplicate]Java中的顺序字符串搜索[重复]
【发布时间】:2013-04-11 00:39:39
【问题描述】:

你好再次堆栈溢出.. ers, 我创建了这段代码来顺序搜索数组以找到一个值,在本例中是一个名称。但是我不能让它工作,它不会找到我输入的名字,并且总是返回 -1 的值。

当我将所有类型更改为 INT 并在年龄数组上进行搜索时,它工作了,所以它可能与字符串类型有关?有人可以帮我吗?

public static void main(String[] args) {

    String[] name = {"John", "bert", "Elle", "beth"};
    String[] sex = {"Male", "Male", "female", "female"};
    int[] age = {18, 25, 22, 36};
    int found;

    Scanner keyboard = new Scanner(System.in);
    System.out.println("Enter name to search: ");

    String searchName = keyboard.next();

    found = searchNames(name, searchName);

    if(found == -1)
        System.out.println("Error, not found: " + found);
    else
        System.out.println("Found At: " + found);

}

private static int searchNames(String[] name, String searchName) {

    int i = 0, foundAt = -1;
    boolean found = false;

    while (!found && i < name.length)
    {
        if (name[i] == searchName)
        {
            found = true;
            foundAt = i;
        }
        i++;
    }
    return foundAt;
}

【问题讨论】:

  • 也就是说,您需要改为name[i].equals(searchName)

标签: java string search sequential


【解决方案1】:

这将很快关闭,但使用.equals() 比较字符串。

【讨论】:

    【解决方案2】:

    尝试替换这部分代码

    while (!found && i < name.length)
    {
        if (name[i] == searchName)
        {
            found = true;
            foundAt = i;
        }
        i++;
    }
    

    for(int i=0; i<name.length; i++)
    {
        if(name[i].equalsIgnoreCase(searchName))
        {
            found = true;
            foundAt = i;
            break;
        }
    }
    

    【讨论】:

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