/*
标题:第一个数字
内容:
以下的静态方法实现了:把串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))方法得到了,
*/