C# 二维阵列isn';t按预期在C中创建#
在一个简单的C#控制台应用程序中,我有以下几点:C# 二维阵列isn';t按预期在C中创建#,c#,multidimensional-array,C#,Multidimensional Array,在一个简单的C#控制台应用程序中,我有以下几点: class Program public static void Main() { string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3" string[,] myArray = new string[s[0], s[0]]; . . . } 调试后,myArray的值将显示字符串[53,53]
class Program
public static void Main()
{
string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
string[,] myArray = new string[s[0], s[0]];
.
.
.
}
调试后,myArray的值将显示字符串[53,53],但我需要字符串[3,3]。但是,如果我使用Console.WriteLine(s[0]),它会打印“3”
我试过了
string[,] myArray = new string[(int)s[0], (int)s[0]];
同样的结果
53是从哪里来的
s[0]
返回一个char
(字符串的第一个字符),如果将char
强制转换为int
,则会得到该字符的char码,而不是期望的数字。
试试这个:
string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
string[,] myArray = new string[int.Parse(s[0].ToString()), int.Parse(s[0].ToString())];
注意:最好使用int.TryParse
而不是int.Parse
,因为int.Parse
会在给定字符串无法转换为int
时引发异常,但int.TryParse
返回bool
:
string s = Console.ReadLine(); //User enters the string: "integer, space, integer". Eg., "3 3"
int i1;
int i2;
if (int.TryParse(s[0].ToString(), out i1) && int.TryParse(s[0].ToString(), out i2))
{
string[,] myArray = new string[i1, i2];
// your other code
}
else
{
Console.WriteLine("Unable to convert the char to an int.");
}
你首先得把你的字符串分成两部分
string s = "12 34";
string parts[] = s.Split();
// Now parts[0] contains "12"
// parts[1] contains "34"
int i1, i2;
if (parts.Length == 2 &&
Int32.TryParse(parts[0], out i1) &&
Int32.TryParse(parts[1], out i2) )
{
...
}
仍然不能解释他是怎么得到53的“3”应该是51,除非他用“5”测试。”@CharlesW My bad。我最初是用“5 5”来测试的。谢谢你指出这一点。谢谢你,接得好。在前一种情况下,两位整数不起作用。