不用现有方法,把string转换成int型[C#]

简介:

今天听朋友说到个面试题:不用现有方法,把string转换成int型

就试着写了一下,没有考虑负数的情况,看的朋友可以自己试一下,也不难.

 

 

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. namespace StringToInt  
  5. {  
  6.     class Program  
  7.     {  
  8.         static void Main(string[] args)  
  9.         {  
  10.             string strInput=string.Empty;  
  11.             //输入e,E,退出操作  
  12.             while (!strInput.Equals("e") || !strInput.Equals("E"))  
  13.             {  
  14.                 strInput = Console.ReadLine();  
  15.                 int n = TransToInt(strInput);  
  16.                 if (n == -1)  
  17.                 {  
  18.                     Console.WriteLine("输入的不是有效的数字字符或数字超出整形范围!");  
  19.                 }  
  20.                 else  
  21.                 {  
  22.                     Console.WriteLine("转换后的整数是{0}", n);  
  23.                 }  
  24.             }   
  25.         }  
  26.         private static int TransToInt(string str)  
  27.         {  
  28.             char[] ch = str.ToCharArray();//转换成char型来计算  
  29.             int[] nArray = new int[str.Length];//定义一个int型数组  
  30.             int nReturn = 0;   //定义返回的int型值  
  31.             const int ten = 10;   //定义常量  
  32.             for (int i = 0; i < ch.Length; i++)  
  33.             {  
  34.                 if (ch[i] - 48 < 0 || ch[i] - 48>9)  //判断是否是可转换的int型  
  35.                 {  
  36.                     return -1;  
  37.                 }  
  38.                 else  
  39.                 {  
  40.                     nArray[i] = ch[i] - 48;  //把字符转换成int  
  41.                     for (int j = ch.Length - i - 1; j > 0; j--)  
  42.                     {  
  43.                         nArray[i] *= ten;  
  44.                     }  
  45.                     nReturn += nArray[i];  
  46.                 }  
  47.             }  
  48.             if (!nReturn.ToString().Equals(str))//如果数字超出int型范围  
  49.             {  
  50.                 return -1;  
  51.             }  
  52.             return nReturn;  
  53.         }  
  54.     }  
  55. }  
分类:  项目有关

本文转自左正博客园博客,原文链接:http://www.cnblogs.com/soundcode/archive/2011/11/22/2258501.html,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
303 0
|
1月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
116 65
|
12天前
|
JSON 程序员 C#
使用 C# 比较两个对象是否相等的7个方法总结
比较对象是编程中的一项基本技能,在实际业务中经常碰到,比如在ERP系统中,企业的信息非常重要,每一次更新,都需要比较记录更新前后企业的信息,直接比较通常只能告诉我们它们是否指向同一个内存地址,那我们应该怎么办呢?分享 7 个方法给你!
|
14天前
|
C# UED SEO
C# 异步方法async / await任务超时处理
通过使用 `Task.WhenAny`和 `Task.Delay`方法,您可以在C#中有效地实现异步任务的超时处理机制。这种方法允许您在指定时间内等待任务完成,并在任务超时时采取适当的措施,如抛出异常或执行备用操作。希望本文提供的详细解释和代码示例能帮助您在实际项目中更好地处理异步任务超时问题,提升应用程序的可靠性和用户体验。
43 3
|
1月前
|
Java
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
本文深入探讨了Java中方法参数的传递机制,包括值传递和引用传递的区别,以及String类对象的不可变性。通过详细讲解和示例代码,帮助读者理解参数传递的内部原理,并掌握在实际编程中正确处理参数传递的方法。关键词:Java, 方法参数传递, 值传递, 引用传递, String不可变性。
57 1
【编程基础知识】(讲解+示例实战)方法参数的传递机制(值传递及地址传递)以及String类的对象的不可变性
|
1月前
|
机器学习/深度学习 算法
让星星⭐月亮告诉你,HashMap之tableSizeFor(int cap)方法原理详解(分2的n次幂和非2的n次幂两种情况讨论)
`HashMap` 的 `tableSizeFor(int cap)` 方法用于计算一个大于或等于给定容量 `cap` 的最小的 2 的幂次方值。该方法通过一系列的无符号右移和按位或运算,逐步将二进制数的高位全部置为 1,最后加 1 得到所需的 2 的幂次方值。具体步骤包括: 1. 将 `cap` 减 1,确保已经是 2 的幂次方的值直接返回。 2. 通过多次无符号右移和按位或运算,将最高位 1 后面的所有位都置为 1。 3. 最终加 1,确保返回值为 2 的幂次方。 该方法保证了 `HashMap` 的数组容量始终是 2 的幂次方,从而优化了哈希表的性能。
33 1
|
17天前
|
JavaScript 前端开发 开发者
|
1月前
|
存储 C#
【C#】大批量判断文件是否存在的两种方法效率对比
【C#】大批量判断文件是否存在的两种方法效率对比
41 1
|
2月前
|
JavaScript 前端开发 API
javaScript中常用的String方法以及注意点总结
本文总结了JavaScript中常用的String对象的方法及其注意事项,包括大小写转换、字符获取、子字符串截取、字符串拼接、去除空格、替换、分割以及查找字符串中字符的索引等操作。提供了每种方法的使用示例代码,帮助理解它们的具体用法和差异。
38 2
|
3月前
|
JavaScript 算法 前端开发
JS算法必备之String常用操作方法
这篇文章详细介绍了JavaScript中字符串的基本操作,包括创建字符串、访问特定字符、字符串的拼接、位置查找、大小写转换、模式匹配、以及字符串的迭代和格式化等方法。
JS算法必备之String常用操作方法

热门文章

最新文章