Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 初始化整数数组 string剂量=“2/3/5毫克”; string[]dosageStringArray=剂量.Split('/'); int[]dosageIntArray=null; 对于(int i=0;i_C#_Asp.net_Arrays_Exception - Fatal编程技术网

C# 初始化整数数组 string剂量=“2/3/5毫克”; string[]dosageStringArray=剂量.Split('/'); int[]dosageIntArray=null; 对于(int i=0;i

C# 初始化整数数组 string剂量=“2/3/5毫克”; string[]dosageStringArray=剂量.Split('/'); int[]dosageIntArray=null; 对于(int i=0;i,c#,asp.net,arrays,exception,C#,Asp.net,Arrays,Exception,,您试图在此处访问空数组(dosageIntArray): 您需要先对其进行初始化,然后才能像那样访问它。您正在尝试访问一个空数组(dosageIntArray),如下所示: 您需要先初始化它,然后才能像那样访问它。您正在寻找类似 dosageIntArray[i] = Common.Utility.ConvertToInt(lastDigit[0]); 你在找类似的东西 dosageIntArray[i] = Common.Utility.ConvertToInt(lastDigit[0])

,您试图在此处访问空数组(dosageIntArray):


您需要先对其进行初始化,然后才能像那样访问它。

您正在尝试访问一个空数组(dosageIntArray),如下所示:


您需要先初始化它,然后才能像那样访问它。

您正在寻找类似

dosageIntArray[i] = Common.Utility.ConvertToInt(lastDigit[0]);

你在找类似的东西

dosageIntArray[i] = Common.Utility.ConvertToInt(lastDigit[0]);

您必须按如下方式分配剂量:

int[] dosageIntArray = new int[dosageStringArray.Length];
此外,代码中还有另一个bug: 数组最后一个元素的索引长度为-1。 您的for声明应为:

in[] dosageIntArray = new int[dosageStringArray.Length];
for(int i=0;i


对于(int i=0;i您必须按如下方式分配剂量:

int[] dosageIntArray = new int[dosageStringArray.Length];
此外,代码中还有另一个bug: 数组最后一个元素的索引长度为-1。 您的for声明应为:

in[] dosageIntArray = new int[dosageStringArray.Length];
for(int i=0;i


用于(int i=0;i我强烈建议您使用列表而不是数组。您不需要定义列表的大小,只需向列表中添加项目即可。它非常实用且易于使用。

我强烈建议您使用列表而不是数组。您不需要定义列表的大小,只需向列表中添加项目即可。它非常实用且非常简单r使用。

解决方案的最大问题不是缺少数组声明,而是如何使用 您将解析以下代码:

for (int i = 0; i <= (dosageStringArray.Length - 1); i++)
由于您的问题肯定是特定于域的,因此可能不会出现这种情况,但表示相同整数的两个数字会有一些变化

以下解决方案以正斜杠拆分字符串,然后在将其转换为整数之前从子字符串中删除任何非数字

string dosage = "2/13/5 mg";

或者不管可爱的Linq synthax看起来怎么样。

解决方案的最大问题不是缺少数组声明,而是如何声明 您将解析以下代码:

for (int i = 0; i <= (dosageStringArray.Length - 1); i++)
由于您的问题肯定是特定于域的,因此可能不会出现这种情况,但表示相同整数的两个数字会有一些变化

以下解决方案以正斜杠拆分字符串,然后在将其转换为整数之前从子字符串中删除任何非数字

string dosage = "2/13/5 mg";

或者是用可爱的Linq synthax做的任何东西。

作为替代方法:

Regex digitsOnly = new Regex(@"[^\d]");   
var array = dosage.Split('/')
                  .Select(num => int.Parse(digitsOnly.Replace(num, string.Empty)))
                  .ToArray();

作为替代办法:

Regex digitsOnly = new Regex(@"[^\d]");   
var array = dosage.Split('/')
                  .Select(num => int.Parse(digitsOnly.Replace(num, string.Empty)))
                  .ToArray();


Oy,我真的希望这离生产代码远点。>@asma…我弄错了。但是你可以使用Split(“/”,“”),只需删除最后一个值@神田翠 哦,我不知道这一点。事实上,我在C#Oy中没有太多的工作,我真的希望这离生产代码远点。>@asma…我错了。但是你可以使用Split('/',''),只删除最后一个值@神田翠 哦,我不知道这个。实际上我在C#Thanx Dominik中没有太多工作,这看起来很完美。需要使用长度(数组长度)初始化Thanx Dominik,这看起来很完美。需要使用长度(数组长度)初始化嗯…你是对的。但是问题是从Dominik提到的地方开始的。另外,需要修改循环变量与array.length的if相等性检查,以与array.length进行检查-1hmmm…你是对的。但是问题是从Dominik提到的地方开始的。另外,需要对循环变量与array.length的if相等性检查要修改以检查数组。length-1如果数组大小是静态的,我认为没有必要使用list。如果可以使用list,那么使用数组是没有意义的。@Kirk,虽然list肯定更方便,但它也使用数组来支持数据。因此,如果预先知道维度,我看不到u的真正缺点唱一个数组。也就是说,问题中提出的任务应该用两种方法都不使用IMHO来解决。我认为如果数组大小是静态的,那么使用列表是没有意义的。如果你可以使用列表,那么使用数组是没有意义的。@Kirk,虽然列表当然更方便,但它也使用数组来支持数据。所以如果ion是预先知道的,我看不到使用数组的真正缺点。也就是说,问题中提出的任务应该用两种方法都不使用IMHO来解决。你的解决方案是如此简洁和微妙。我的解决方案是一团糟!我更喜欢用你的解决方案。你的解决方案是如此简洁和微妙。我的解决方案是一团糟!我更喜欢用你的解决方案。