2015-11-03 136 views
0

我有一个字符串数组来定义用户输入,我需要将字符串数组转换成一个短阵列,所以我可以使用这些值进行计算。我需要使用一个数组,因为我需要稍后参考所有的值。 这是我有:将一个字符串数组转换成一个短阵列

string [] calIntake = new string[3]; 
calIntake [0] = Console.ReadLine(); 
calIntake[1] = Console.ReadLine(); 
calIntake[2] = Console.ReadLine(); 

我曾尝试:

short[] calIntakeNum = Array.ConvertAll(calIntake.split(','), Short.Parse); 

我得到这个错误时说:“类型参数的方法“System.Array.ConvertAll(TInput [] ,System.Converter)”不能从使用推断尝试显式指定类型参数

然后我尝试:。

short[] calIntakeNum = Array.ConvertAll(calIntake.split(','), ne Converter<string, short>(Short.Parse)); 

和我得到相同的错误。那么我怎样才能将一个基于用户输入的字符串数组转换成一个短阵列呢?

+0

这是您的确切代码? 'string []'没有'split'方法。 –

+0

您能否澄清一下您期望'calIntake.split(',')'做什么?此外,为什么你试图这样一个奇怪的代码时,你可以假设阅读文章显示了很多简单的代码[Array.ConvertAll](https://msdn.microsoft.com/en-us/library/exc45z53(v = vs.110 )的.aspx)? –

回答

2

您只需通过short.Parse方法投射字符串:

short[] calIntakeNum = calIntake.Select(short.Parse).ToArray(); 
+0

这是正确的,尽管他不应该使用数组来完成任何事情。如果他的教练想要阵列,他的教练应该在麦当劳找工作。 –

+0

list.Add(item)不会因为索引超出范围而崩溃。静态初始化时,数组是适当的(因为OP应该是)。否则,通用列表更强大并且可维护。我知道有一个主张总是写出最糟糕的代码的学校。我不是粉丝。你专业编写代码有多久了? –

+0

我知道你不明白。我说“泛型列表”来区分它与System.Collections.List,它也称为列表,而不是通用的。 [数组不是泛型](http://stackoverflow.com/a/15561100/424129)。您的经验不足与您不知道为什么固定大小的容器可能会成为问题有很大关系。如果OP稍后需要在索引1处插入另一个项目,该怎么办?他必须添加一行新的代码并更改其他三个代码。数组写更多的工作,更多的工作来改变,写和修改更容易出错。多次调用list.Add()是可取的。 –

1

calIntake已经是一个数组,你不需要Split它。有在C#中没有类型Short,有shortInt16

short[] calIntakeNum = Array.ConvertAll(calIntake, short.Parse); 
0

你尝试失败,因为你打过电话上不存在的类的方法,因为Short.Parse不存在第二种方法。去除你的第一个参数.split(',')ConvertAll,改变Short.Parseshort.Parse将解决这个问题:

short[] calIntakeNum = Array.ConvertAll(calIntake, new Converter<string, short>(short.Parse)); 

如果有可能为你的程序,你可以声明您的数组为short[]原来,和Console.ReadLine()呼吁short.Parse

short[] shortArray = new short[3]; 
shortArray[0] = short.Parse(Console.ReadLine()); 
相关问题