黑马程序员技术交流社区
标题:
大家来帮我看看这个return,什么意思。
[打印本页]
作者:
黑马老兵
时间:
2012-4-10 17:17
标题:
大家来帮我看看这个return,什么意思。
class ReturnTest
{
public static int test()
{ int m =0;
for (int i = 0; i < 20; i ++ )
{
for (int j = 9;j < 20-i ;j++ )
{
if (i==j)
{
return j;
}
}
}return m;
}
public static void main(String[] args)
{
int m;
m = test();
System.out.println(m);
}
}
复制代码
代码中有两个for
循环,方法test是一个需要返回值的方法,为什么把return写在第二个for内,编译时就提示结尾需要 return,好吧,需要返回值的方法结尾必需写return,但是我返回的是m,结果应该是0才对 啊。怎么是9?是不是for 内的那个return把j的值赋给了m?哎。。纠结啊。。。
作者:
刘士
时间:
2012-4-10 17:18
那是因为你在内存循环return了。把内层循环中的return注释掉,就可以了。
作者:
黄或俊
时间:
2012-4-10 17:38
不是把j赋值给m
你可以把j、m换成实际数值去测试,我就这样得出来结果的
至于为什么要写return m?
因为你的方法没有返回值,而if语句可能执行不到,所以编译器会检测到这个错误
作者:
黑马老兵
时间:
2012-4-10 18:34
黄或俊 发表于 2012-4-10 17:38
不是把j赋值给m
你可以把j、m换成实际数值去测试,我就这样得出来结果的
至于为什么要写return m?
谢谢,了解了。
作者:
邓斌
时间:
2012-4-10 18:51
我的心那个纠结啊,看到这个问题准备回答后。就掉线到现在。
版主大大如果看到给个分吧,得个分不容易。
class ReturnTest
{
public static void test()
{ int m =0;
for (int i = 0; i < 20; i ++ )
{
for (int j = 9;j < 20-i ;j++ )
{
if (i==j)
{
// return i;
}
System.out.print(i+"+"+j+" ");
}
System.out.println();
}
}
public static void main(String[] args)
{
test();
}
}
复制代码
不是把J赋给了M。。而是本来就返回J。判断了i=j就return j .这语句迟早会执行的。所以一return后。就不执行第2个return了。
我把代码改了下,看下就明白了。
输出结果:
0+9 0+10 0+11 0+12 0+13 0+14 0+15 0+16 0+17 0+18 0+19
1+9 1+10 1+11 1+12 1+13 1+14 1+15 1+16 1+17 1+18
2+9 2+10 2+11 2+12 2+13 2+14 2+15 2+16 2+17
3+9 3+10 3+11 3+12 3+13 3+14 3+15 3+16
4+9 4+10 4+11 4+12 4+13 4+14 4+15
5+9 5+10 5+11 5+12 5+13 5+14
6+9 6+10 6+11 6+12 6+13
7+9 7+10 7+11 7+12
8+9 8+10 8+11
9+9 9+10
10+9
作者:
黑马-刘昌文
时间:
2012-4-10 19:47
首先要看看i和j有没有相等的可能??如果两个没有相等的可能就不会执行return j;
就没有返回值,编译的时候当然提示要有返回值撒
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2