Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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# 二维阵列isn';t按预期在C中创建#_C#_Multidimensional Array - Fatal编程技术网

C# 二维阵列isn';t按预期在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]

在一个简单的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],但我需要字符串[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”来测试的。谢谢你指出这一点。谢谢你,接得好。在前一种情况下,两位整数不起作用。