• 3.4.5 字符串与整数互转


      笔者给读者两个小任务,锻炼一下读者的思维能力,这对以后的编程是有好处的。
      小任务1:不使用强制类型转换操作把字符串转化为数字,比如把“-123”转化为-123(需要考虑正负数的情况)
      小提示:
      可以把字符减去'0'得到字符所代表的数字。比如'3'-'0'=3,也就实现了从代表数字的字符转化为了数字。
      可以考虑把单个数字乘以10的N次方累加的方法来得到一个数字。比如123=1*100+2*10+3*1。
      参考程序如下:

    //不使用强制类型转换操作把字符串转化为数字
    string s = "-0001234567890";    //在代码中考虑了正负数的情况
    double iResult = 0//存放结果
    int tmp = 1;    //输出前把结果乘以这个数用于处理正负数的情况
    if (!char.IsNumber(s[0]))   //果字符串第一个字符不是数字
    {
        
    if (s.IndexOf('-'== 0)    //如果字符串第一个字符是'-'
        {
            s 
    = s.TrimStart('-');   //去除第一个字符
            tmp = -1;   //结果乘以-1就得到了负数
        }

        
    else if (s.IndexOf('+'== 0)   //如果字符串第一个字符是'+'
            s = s.TrimEnd('+'); //去除第一个字符'+'
        else
            
    return//直接返回
    }

    for (int i = 0; i < s.Length; i++)
    {
        
    char c = s[i];  //得到当前字符
        int iCurrentNum = c - '0';  //把字符转化为整数
        iResult += iCurrentNum * Math.Pow(10, s.Length - i - 1);    //如果加上当前数字*10的N次方
        
    //其实原理就是123=1*10的次方+2*10的一次方+3*10的次方
    }

    iResult 
    *= tmp;
    Console.WriteLine(iResult);

      小任务2:不使用强制类型转换操作把数字转化为字符串,比如把-123转化为“-123”(需要考虑正负数的情况)。
      小提示:
      可以考虑把数字除以10取余获得最后一位数字。比如123%10=3,则最后一位为3。取得最后一位后把数字减去最后一位然后再除以10,不断重复。比如(123-3)/10=12。第二次循环就从12中获取2这个数字。
      参考程序如下:
    //不使用强制类型转换操作把数字转化字符串
    int iNum = -123456//在代码中考虑正负数的情况
    bool b = iNum < 0;  //是否负数
    iNum *= b ? -1 : 1//是负数则转换为正数
    string sResult = "";    //存放结果
    while (iNum % 10 != 0)  //从最后一位开始逐一获得数字
    {
        
    int iCurrentNum = iNum % 10;    //取得当前数字,比如第一次数循环iCurrentNum=6,第二次循环iCureentNum=5
        sResult += iCurrentNum; //把数字加入字符串,比如第一次循环sResult=6,第二次循环sResult=65
        iNum -= iCurrentNum;    //减去当前数字,比如第一次循环iNum=123450,第二次循环iNum=12340
        iNum /= 10//除以10,比如第一次循环iNum=12345,第二次循环iNum=1234
    }

    //把字符串反转
    char[] arr = sResult.ToCharArray(); //把字符串打为字符数组
    sResult = "";   //清空字符串
    for (int i = arr.Length - 1; i >= 0; i--)  //从最后一位开始逐一加入字符
        sResult += arr[i];
    Console.WriteLine(b 
    ? "-" + sResult : sResult);
  • 相关阅读:
    【Rust】匹配绑定
    【Rust】iflet
    【Rust】结构体匹配
    【Rust】闭包
    【Rust】函数
    【Rust】方法
    【Rust】whilelet
    【Rust】匹配保护
    【Rust】闭包捕获变量
    优先队列 安静点
  • 原文地址:https://www.cnblogs.com/0754ydj/p/1247960.html
Copyright © 2020-2023  润新知