已完成:
- 猜年龄
- 猜年龄02
- 猜生日
- 圆的面积
- 第一个数字:
-
【题目】
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
如果找不到数字,返回-1
例如:
s = "abc24us43" 则返回2
s = "82445adb5" 则返回8
s = "ab" 则返回-1
以下的静态方法实现了:把串s中第一个出现的数字的值返回。
请分析代码逻辑,并推测划线处的代码。
答案写在“解答.txt”文件中
注意:只写划线处应该填的内容,划线前后的内容不要抄写。
【分析】
题目使用了递归思想,递归出口是:字符串s为null或者长度为0;如果遇到数字就立即返回,如果遇到非数字字符,则求其子字符串的第一数字。
1 import java.util.*; 2 public class Lanq { 3 public static int getFirstNum(String s) { 4 //递归出口 5 if (s == null || s.length() == 0) 6 return -1; 7 //取第一字符 8 char c = s.charAt(0); 9 //如果是数字,返回该数字 10 if (c >= '0' && c <= '9') 11 return s.charAt(0)-'0'; 12 13 return getFirstNum(s.substring(1)); 14 } 15 16 public static void main(String[] args) { 17 String s1 = "abc24us43"; //则返回2 18 String s2 = "82445adb5"; //则返回8 19 String s3 = "ab"; //则返回-1 20 System.out.println(getFirstNum(s1)); 21 System.out.println(getFirstNum(s2)); 22 System.out.println(getFirstNum(s3)); 23 } 24 }
2
8
-1