第一个数字

/*
标题:第一个数字
内容:

以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1

例如:
s = "abc24us43" 则返回2
s = "82445adb5" 则返回8
s = "ab" 则返回-1

public static int getFirstNum(String s)
{
if(s==null || s.length()==0) return -1;

char c = s.charAt(0);
if(c>='0' && c<='9') return _____________; //填空

return ___________________; //填空
}

 

请分析代码逻辑,并推测划线处的代码。

答案写在 “解答.txt” 文件中

注意:只写划线处应该填的内容,划线前后的内容不要抄写。

*/

 1 class pro05 {
 2     public static void main (String[] args){
 3         System.out.println(fff.getFirstNum("abc24us43"));
 4         System.out.println(fff.getFirstNum("82445adb5"));
 5         System.out.println(fff.getFirstNum("ab"));
 6 
 7     }
 8     
 9     public static int getFirstNum(String s)
10     {
11         if(s==null || s.length()==0) return -1;
12         
13         char c = s.charAt(0);
14         if(c>='0' && c<='9') return c-'0';  //填空
15         
16         return getFirstNum(s.substring(1));  //填空
17     }
18 }

 

/*

又是一道递归题,不过这个题目个人感觉比上一道题目简单一点点,
其中要注意的是“c-'0'”这一句,"c"是一个char类型,而返回值为int,
java中,char和int在一定范围类是可以互相转化的,
这里“c-'0'”,“c-48”,应该都可以,48是‘0’的asc码值,
*/

/*
刚才再看这道题,递归方法可以调用很多层,但是只有一层有返回值,它返回的值会返回给最上层的方法,没想通为什么会这样,但这道题里面,“abc24us43”前三次都是没有返回值的,到了第四层的时候才返回“2”,但是这个“2”最后会被打印出来,它不是在自己的方法中打印出来的,而是在main方法中被打印的,说明这个“2”被最上层的getFirstNum(s.substring(1))方法得到了,

*/

posted on 2013-05-03 09:55  wsxjbcy  阅读(222)  评论(0编辑  收藏  举报

导航