在处理数组的所有元素时,需要注意索引开始于0而结束于arrayName.length - 1。需要极力避免数组越界的情况,即使用负数作为索引或者大于等于数组长度的数作为索引。

此外,在数组中寻找值时需要避免过早跳出循环。以下method使用return语句来终止method的执行并将结果返回至调用者。如果return语句带有返回值,其需要与method签名的返回类型一致。返回类型为void的method不能有任何返回值,但可以有一至多个return语句作为method执行的结束点。

public class StringWorker
{
   private String[ ] arr = {"Hello", "Hey", "Good morning!"};

   public int findString(String target)
   {
     String word = null;
     for (int index = 0; index < arr.length; index++)
     {
       word = arr[index];

       if (word.equals(target))
       {
         return index;
       }
       else return -1;
     }
     return -1;
   }

   public static void main(String[] args)
   {
     StringWorker sWorker = new StringWorker();
     System.out.println(sWorker.findString("Hey"));
   }
}

以上的代码犯了什么错误?在循环的一开始它先从索引为0的元素入手并检查对应的字符串元素是否与传入的参数相等。如果两者有相同的字符和同样的顺序会返回0,否则则返回-1。但是这段代码也只能处理数组的第一个元素。需要做怎样的修改可以让它在返回结果前比较更多的数组元素?


陈 欣

AADPS创始人

发表评论