一、字符串的操作
字符串是可以倒着拼接的!!!
例子:比如输入一个整型数字123456,要求输出对应的中文“一二三四五六”
实现方法:
我们用for循环对10取余数可以很容易的按照如下顺序拿到每一位的数字
6、5、4、3、2、1(可以看出数字是倒序的)
有几种方法可以处理这些数据
方法一:
先得到一个倒序的数值:654321,然后再把这个654321用for循环对10取余数,就可拿到原始顺序排列的每一位数字1、2、3、4、5、6
之后通过switch case语句取到对应的中文即可
但这种做法存在一个隐患,对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循环,并且还要创建中间变量用以不断减去当前的最高位,不够优雅
方法三只用了一层循环就解决了问题,代码比方法二要简洁,理解起来也更为顺畅