黑马程序员技术交流社区
标题:
新人求助,“return”问题。。。困扰了好久<已解决>
[打印本页]
作者:
刘焘
时间:
2012-6-12 23:29
标题:
新人求助,“return”问题。。。困扰了好久<已解决>
本帖最后由 刘焘 于 2012-6-13 00:13 编辑
class Wenti
{
public static void main (String[] args)
{
int[] arr={3,2,4,1,5,6,8,2};
int index=getIndex(arr,8);
System.out.println("index="+index);
}
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{ 这样理解为什么不行。
if(arr[x]==key) if(arr[x]==key)
return x; arr[x]=key;
} }
return -1; 为什么这里必须要加return,如果我要输入的值一定在数组里的话 。 return x;
}
作者:
王超
时间:
2012-6-12 23:38
我觉得楼主不懂的是return语句的作用范围
return语句的作用范围在此语句的大括号内
getIndex需要返回int类型,而除了for循环就没有return语句
所以当然是使用 return -1; 这里-1的常量可以随意定,但在java中经常这样定义错误返回的常量
作者:
王晓新
时间:
2012-6-12 23:40
return -1表示你查找的元素不在数组中{:soso_e100:}
作者:
赵兵锋
时间:
2012-6-12 23:41
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)
arr[x]=key;//这样没有意义,这里应该是break。
}
return x;//即使上面改成break了,这里也有问题,x是在for里定义的,在这里是访问不到的。还有这里必须要用return是因为这个方法定义里返回int型数据。
可以这样改一下。
int x = 0;
for(;x<arr.length;x++)
{
if(arr[x]==key)
break;
}
return x;//这里的x有两种情况,一是数组中有key,这里x为其下标,二是数组中没有key,这里x为arr.length。
复制代码
作者:
刘焘
时间:
2012-6-12 23:45
王晓新 发表于 2012-6-12 23:40
return -1表示你查找的元素不在数组中
嗯 我知道呀。但是我想问的是假如我要查找的数一定在此数组中的时候呢。他就不会运行return -1撒。哎哟,我脑袋都搅浑了~~~
作者:
黑马张扬
时间:
2012-6-12 23:46
因为变量x是在for循环里定义的 作用域只在for循环内
你在for循环外面是返回不了它的
作者:
乐峰
时间:
2012-6-12 23:48
public static void main(String[] args)
{
int[] arr={3,2,4,1,5,6,8,2};
int index=getIndex(arr,8);
System.out.println("index="+index);
}
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key){
arr[x]=key;
}
//return x;
}
return -1;
}
按照你的理解的话,这个方法返回值永远都是-1,因为方法里面只有一个return语句。
如果:
public static void main(String[] args)
{
int[] arr={3,2,4,1,5,6,8,2};
int index=getIndex(arr,8);
System.out.println("index="+index);
}
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key){
//arr[x]=key;
return x;
}
}
return -1;
}
因为第一个return语句在for循环的if语句里面,如果不满足条件将不走if语句里面的return语句,这样方法就没有int类型的返回值,所以必须在for循环外面方法里面在写一个return语句,这样方法不论在那种情况下都有返回值。
作者:
葛奎
时间:
2012-6-12 23:58
class Test14
{
public static void main (String[] args)
{
int[] arr={3,2,4,1,5,6,8,2};
int index=getIndex(arr,8);
System.out.println("index="+index);
}
public static int getIndex(int[] arr,int key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x]==key)//
从第一个位置开始到最后位置结束.判断要搜索的数是不是在数组里
return x;//
如果在的话,那么就返回它在数组中的位置 ,这个函数就结束了
}
return -1; //
如果循环结束仍没找到的话,那么就返回-1标识一下,说明数组里面没有要找的数
} // 为什么这里必须要加return,如果我要输入的值一定在数组里的话 。
}
// 这样理解为什么不行。
// if(arr[x]==key)
// arr[x]=key;//
这样理解没有意义啊,找到了为什么还要把值给它呢 目的是为了找位置为什么要赋值啊.
// return x;
作者:
刘焘
时间:
2012-6-12 23:59
赵兵锋 发表于 2012-6-12 23:41
哎呀,原来是这样,终于想明白了。谢谢啦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2