不用字符串数组将一整数转换为各个数字组成的int[]数组

今天碰到一道题,写一个方法,传进去一个整数,输出int[]型的数组来包含这个整数中的各个数字,如12345输出为int[5]{1,2,3,4,5}的数组。首先想到的当然是把这个整数转换为字符串,然后用ToArray什么的方法把其转换为string[]数组,再把这个数组存到int[]数组里,但题目恰恰要求不能用这样的方法来实现,于是冥思苦想。。。想到可以用取模得余数的方法来一个个获取数字 

ContractedBlock.gif ExpandedBlockStart.gif Code
        //方法一:通过取模得余数的方法(自己的方法)
        private int[] GetIntArray_(int num)
        {
            
int len = num.ToString().Length;
            
int[] arr = new int[len];
            
for (int i = 0; i < len; i++)
            {
                arr[i] 
= (int)((num % Math.Pow(10, i + 1- num % Math.Pow(10, i)) / Math.Pow(10, i));
            }
            Array.Reverse(arr);
            
return arr;
        }

用了很多的Math.Pow,主考官说写复杂了,可以稍微简化一点,于是告诉我

ContractedBlock.gif ExpandedBlockStart.gif Code
        //方法二:通过取模得余数的方法(别人的方法)
        private int[] GetIntArray__(int num)
        {
            
int len = num.ToString().Length;
            
int[] arr = new int[len];
            
for (int i = 0; i < len; i++)
            {
                arr[i] 
= num % 10;
                num 
/= 10;
            }
            Array.Reverse(arr);
            
return arr;
        }

 其实是一样的思路,只不过他除了用到取模得数外,还用除法把剩下部分弄出来了

附上使用字符串数组的方法:

ContractedBlock.gif ExpandedBlockStart.gif Code
        //方法三:转换为字符串数组然后存到整数数组里
        private int[] GetIntArray(int num)
        {
            
char[] strArr = num.ToString().ToCharArray();
            
int[] intArr = Array.ConvertAll<charint>(strArr, delegate(char c) { return int.Parse(c.ToString()); });
            
return intArr;
        }

 这里用到了Array.ConvertAll把char[]转换为int[],当然也可以迭代一下,一个个转换

再附上一个遍历数组的方法,用到了泛型

ContractedBlock.gif ExpandedBlockStart.gif Code
        //遍历数组
        private string ShowArray<T>(T[] arr)
        {
            StringBuilder strBdr 
= new StringBuilder();
            
foreach (T t in arr)
            {
                strBdr.Append(t.ToString());
                strBdr.Append(
"\r\n");
            }
            
return strBdr.ToString();
        }

 

和演示调用代码

ContractedBlock.gif ExpandedBlockStart.gif Code
            //*数组转换演示
            
//char[] c = new char[] { 'a', 'b', 'C', 'd', 'E' };
            
//textBox1.Text += ShowArray<char>(c);
            textBox1.Text += ShowArray<int>(GetIntArray(12345));
            textBox1.Text 
+= ShowArray<int>(GetIntArray_(12345));
            textBox1.Text 
+= ShowArray<int>(GetIntArray__(12345));
            
//*/

 

转载于:https://www.cnblogs.com/lazyman/archive/2009/11/06/1597082.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值