简单推导

已完成:


    • 猜年龄
    • 猜年龄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

原文地址:https://www.cnblogs.com/passion-sky/p/8535481.html