| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1196 人关注过本帖
标题:[求助]关于retrun 语句位置的问题
只看楼主 加入收藏
abboter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-10-13
收藏
 问题点数:0 回复次数:6 
[求助]关于retrun 语句位置的问题
小弟是初学者

请大家帮我看看下面3段代码中return的问题
代码1
public boolean isInteger(){
     String s = "abc";
     for(int i=0;i<s.length();i++){
         if(s.charAt(i)<48||s.charAt(i)>57){
              return true;
         }else
              return false;
        }
    }
}

代码2
public boolean isInteger(){
     String s = "abc";
     for(int i=0;i<s.length();i++){
         if(s.charAt(i)<48||s.charAt(i)>57){
              return true;
         }else
              return false;
        }
    }
   return true;
}

代码3
public boolean isInteger(){
     String s = "abc";
     if(s.charAt(1)==48){
         return true;
     }else{
         return false;
    }
}
代码1编译的时候报错,说缺少return 语句,然后我在for循环外面加了一条return语句就通过了(如代码2),这点让我很不明白,是不是return语句必须要放到方法里的最外层?但代码3中return语句并不在方法里的最外层,也能编译通过,不知是何原因?请知道的给小弟讲讲
搜索更多相关主题的帖子: retrun 语句 charAt 位置 return 
2007-12-04 23:22
gtrgtr
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-9-4
收藏
得分:0 
代码1里的这个
public boolean isInteger方法得有返回值,这并不是void类型的方法,你又没返回值当然报错了,里边的return只是在for循环里起作用,出了for循环当然没用了,就相当一个局部变量!
2007-12-04 23:38
StarScar
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-1-3
收藏
得分:0 
for循环的循环体可能不会被执行,这时就会没有返回值
2007-12-05 01:28
xiang588
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-11-29
收藏
得分:0 
要确保在任何可能情况下都有返回值
1、如果一次都不循环,就不会return
2、不用说了
3、在任何情况下都会return

Coder&Teacher&Dreamer
2007-12-05 12:33
顺子BC
Rank: 1
来 自:江苏徐州
等 级:新手上路
帖 子:9
专家分:0
注 册:2007-11-14
收藏
得分:0 
只看该读者
return 的用法不是很难理解的    以后你会慢慢理解的  我也是个新手
public ?  fangfa(){}
?表示fangfa这个方法的类型,  就像你的代码中写到的?就表示布尔型(boolean)
boolean需要返回一个值 ,所以最好先定义一个boolean型的变量,再写返回语句,即return;
目前我所见到的只有void类型的方法,不需要返回值,所以只要不是void类型的方法都要return;     我就是理解的  
2007-12-05 14:51
xiang588
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-11-29
收藏
得分:0 
编译器不会替你把代码运行一遍再判断是否会一次都不循环
只要是for循环它就会认为有不循环的可能

这是合法的
public boolean add(){
        while(true){
            return true;
        }
 }
没有返回语句
public boolean add1(){
        int i;
        for(i=0;i==100;i++){
            return true;
        }
}

Coder&Teacher&Dreamer
2007-12-05 21:58
abboter
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2007-10-13
收藏
得分:0 
原帖由 [bold][underline]xiang588[/underline][/bold] 于 2007-12-5 21:58 发表 [url=http://bbs.][/url]
编译器不会替你把代码运行一遍再判断是否会一次都不循环
只要是for循环它就会认为有不循环的可能

这是合法的
public boolean add(){
        while(true){
            return true;
        }
}
没有返回语句
pub ...


还是不太明白

如果改成下面呢
public boolean add1(){
        int i;
        for(i=0;i==0;i++){
            return true;
        }
}
还是编译不过的
但是
public boolean add1(){
        int i;
        for(i=0;0==0;i++){
            return true;
        }
}
就会编译通过,有人告诉我是布尔表达式必须是常量才可以
但为何会存在这种情况呢,语法上也没有什么特别规定(写法上是合法的),但就是编译不过

[[italic] 本帖最后由 abboter 于 2007-12-5 22:43 编辑 [/italic]]
2007-12-05 22:35
快速回复:[求助]关于retrun 语句位置的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012344 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved