【题目】
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1
例如:
s = "abc24us43" 则返回2
s = "82445adb5" 则返回8
s = "ab" 则返回-1
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中
注意:只写划线处应该填的内容,划线前后的内容不要抄写。
【分析】
题目使用了递归思想,递归出口是:字符串s为null或者长度为0;如果遇到数字就立即返回,如果遇到非数字字符,则求其子字符串的第一数字。
【源码】
//递归函数
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 s.charAt(0)-'0'; // 填空
//如果不是数字,则求子字符串的第一个数字
return getFirstNum(s.substring(1)); // 填空
}
public static void main(String[] args) {
String s1 = "abc24us43"; //则返回2
String s2 = "82445adb5"; //则返回8
String s3 = "ab"; //则返回-1
System.out.println(getFirstNum(s1));
System.out.println(getFirstNum(s2));
System.out.println(getFirstNum(s3));
}
【结果】
2
8
-1