日期:2014-05-19  浏览次数:20715 次

请教一个菜鸟的问题,等待中...............
          kye= "关键字 ";
                            for(int   i=0;   i <keys.Length;i++   )
{ if(keys[i]==key)
return   i;
return   -1;
}
上面的代码:提示检测无法访问的代码:其中keys为一字符串数组.
假如在字符串数组中找不到值为"key "的时候会执行:return   -1
相反如果找到了会执行return   i不执行return   -1   怎么会提示检测到无法访问的代码呢?


------解决方案--------------------
kye= "关键字 ";
for(int i=0; i <keys.Length;i++ )
{
if(keys[i]==key)
return i;
return -1;
}

首先说,上面的代码绝对不符合你的理解,他实际就执行一次:判断keys[0]是否==key,如果相等,返回0,如果不等返回-1,而i++这句代码实际上是无法执行的


------解决方案--------------------
正确的代码
for(int i=0; i <keys.Length;i++ )
if(keys[i]==key)
return i;
return -1;

其实相当于

for(int i=0; i <keys.Length;i++ )
{
if(keys[i]==key)
{
return i;
}
}
return -1;

你可以比较一下



------解决方案--------------------
for循环翻译成while循环的话

int i=0;
while(i <keys.length)
{
if(keys[i]==key)
return i;
return -1;
i++;
}

从这里就可以清楚的看到无法访问的代码就是i++了