搜索数组

use*_*311 1 java search

我正在试图弄清楚如何创建一个方法来查找数组中的字符串并将其与其索引一起打印出来.我认为方法签名是正确的但我无法弄清楚如何在方法中返回字符串值.

String name = search(array,"Dog"); //the method implementation in main
System.out.println(name);
Run Code Online (Sandbox Code Playgroud)

.

public static int search(String[] array, String key)
{
    for (int i= 0; i< array.length; i++)
        {
         if ( array[i] == key ) 
         return i;  
        }
     return ("Name cannot be found in array);
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 5

您不能String从声明返回的方法返回a int.指示失败的最常见方法是返回超出范围的值:

return -1;
Run Code Online (Sandbox Code Playgroud)

或抛出异常:

throw new NameNotFoundException("Name cannot be found in array");
Run Code Online (Sandbox Code Playgroud)

此外,此行不起作用:

if ( array[i] == key ) 
Run Code Online (Sandbox Code Playgroud)

字符串需要与之比较equals(),而不是==.的==操作者检查该串是相同的对象,而不是他们的内容是相同的.

if (key == null && array[i] == null ||
    key != null && key.equals(array[i]))
Run Code Online (Sandbox Code Playgroud)

并确保不要调用.equals()null引用.上面的代码检查了这种可能性.