Topic: Help ! 程序编译通不过,说没有指定 return 语句!

  Print this page

1.Help ! 程序编译通不过,说没有指定 return 语句! Copy to clipboard
Posted by: potomac
Posted on: 2004-03-05 11:08

我 if 字句里面也 return 了, else 里面也return 了,为什么还说
我没有 return 呢?
TIA

public boolean find(String name){
for(int i=0;i<names.length;i++){
if(names[i].equals(name)){
return true;
} else
return false;
}
}

2.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: hitaco
Posted on: 2004-03-05 11:21

当lengh = 0. 不进入for loop, 编译不通过正常

3.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: jameszhang
Posted on: 2004-03-05 11:26

return 位置不对

4.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: hitaco] Copy to clipboard
Posted by: potomac
Posted on: 2004-03-05 11:51

hitaco wrote:
当lengh = 0. 不进入for loop, 编译不通过正常

怎一个 强 字了得 !
Thanks again.

5.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: lemonte
Posted on: 2004-03-08 21:27

hitaco说的有问题:
如果你把names.length改成5,一样通不过。
我认为代码本身没问题,只不过java检查的太严了。
你这样改一下就ok了:
for(int i=0;i<names.length;i++){
if(names[i].equals(name)){
return true;
} else
return false;
}
return false;

6.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: hitaco
Posted on: 2004-03-08 21:45

恩。不过不是检查太严,是宁可错杀一万,不可放过一个。

因为在上面的代码里,
for(int i = 0; i < 5...

你保证了能进入for loop,

但编译器不会那么智能的在编译的时候就能确定第一次就能进入,
也许代码改成下面的更能说明问题
for(int i = 0; i < j...

这样的话, 是否进入for循环是运行时决定的,你说编译能通过不?

Smile

7.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: longwalk
Posted on: 2004-03-09 17:08

这个也许和编译器的实现有关系,可能compiler不认为if/else语句肯定是reachable的。

8.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: longwalk
Posted on: 2004-03-09 17:14

找到一个篇这个东东:http://www.cis.usouthal.edu/~jhebert/courses/Spring2004/cis120helpErrorFAQ.html

也许是这样的:compile 看到if,认为是有可能unreachable的,于是if的return does not count; 同理else的return does not count。所以缺少return。

9.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: kjjx
Posted on: 2004-04-06 00:10

看看你的最后一个return写在那里了!

10.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: song168
Posted on: 2004-04-09 16:54

按照 lemonte 这样做保你没问题

11.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: 杰兔易易
Posted on: 2004-04-10 11:42


public boolean find(String name){
boolean isExisted = false;
for(int i=0;i<names.length;i++){
if(names[i].equals(name)){
isExisted = true;
break;
}
}
return isExisted;
}

改成这样如何?

12.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: mochow
Posted on: 2004-04-10 16:37

恩,这样改不错。

13.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: 鸡肋男
Posted on: 2004-04-11 21:02

很无聊的例子,你认为那个循环能循环几次?

14.Re:Help ! 程序编译通不过,说没有指定 return 语句! [Re: potomac] Copy to clipboard
Posted by: pengtaoli
Posted on: 2004-04-22 09:41

java的检查是很严格,有些我们认为必定会执行的,其实有可能是不能的。这点对try和catch特别重要。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923