思惟的发散

1、字符串的操做字符串

字符串是能够倒着拼接的!!!it

例子:好比输入一个整型数字123456,要求输出对应的中文“一二三四五六”for循环

实现方法:变量

  咱们用for循环对10取余数能够很容易的按照以下顺序拿到每一位的数字循环

  六、五、四、三、二、1(能够看出数字是倒序的)方法

  有几种方法能够处理这些数据数据

  方法一:思考

    先获得一个倒序的数值:654321,而后再把这个654321用for循环对10取余数,就可拿到原始顺序排列的每一位数字一、二、三、四、五、6字符

    以后经过switch case语句取到对应的中文便可cas

    但这种作法存在一个隐患,对10的倍数的数值会丢掉末尾的0,例如20000,获得的倒序数值是2,而不会是指望的00002

  方法二:

    利用数字的位数进行修正

    对于一个具体的输入数值,咱们可拿到其最高位数

    这样咱们就能够写一个for循环,从最高位开始往下取出每一位的数字进行操做

    取每一位数字的方法,能够在循环内嵌套一个不断除以10的for循环(须要注意的是,在最外层的for循环中,每循环一次都要【减去】对应位的数值)

    即123456,共有六位数,从最高位开始循环,取到1后,123456要减掉100000,拿到23456后再开始下一轮的循环

    这样就能避免10的倍数的隐患,取到每个位上的数字

  方法三:

    设置两个字符串变量,str_result=“”,str

    在for循环的每一轮中可按照倒序取到一位数字,在拿到数字后,直接用switch case语句获取对应中文,赋值给str

    利用下面这条语句

    str_result = str + str_result;

    【将新的字符串拼接到旧字符串的“前面”】,问题解决!

思考:

  方法一是比较直白的思路,但不够严谨

  方法二虽然能实现需求,可是嵌套了两层的for循环,而且还要建立中间变量用以不断减去当前的最高位,不够优雅

  方法三只用了一层循环就解决了问题,代码比方法二要简洁,理解起来也更为顺畅

相关文章
相关标签/搜索