c# - 在 MessageBox 中显示多维数组的值

标签 c# arrays multidimensional-array messagebox

我刚刚在学习多维数组和消息框。我目前在消息框中创建 2 列时遇到问题。我目前可以让它打印出我需要的随机数,但只能打印在一列中。感谢您的帮助!

string  msg = "";

Random numb = new Random();
int[,] thing = new int[ 10, 2 ];

thing[0, 0] = numb.Next(0,10);
thing[0, 1] = numb.Next(0,10);
thing[1, 0] = numb.Next(0,10);
thing[1, 1] = numb.Next(0,10);
thing[2, 0] = numb.Next(0,10);
thing[2, 1] = numb.Next(0,10);
thing[3, 0] = numb.Next(0,10);
thing[3, 1] = numb.Next(0,10);
thing[4, 0] = numb.Next(0,10);
thing[4, 1] = numb.Next(0,10);

thing[5, 0] = numb.Next(0,10);
thing[5, 1] = numb.Next(0,10);
thing[6, 0] = numb.Next(0,10);
thing[6, 1] = numb.Next(0,10);
thing[7, 0] = numb.Next(0,10);
thing[7, 1] = numb.Next(0,10);
thing[8, 0] = numb.Next(0,10);
thing[8, 1] = numb.Next(0,10);
thing[9, 0] = numb.Next(0,10);
thing[9, 1] = numb.Next(0,10);

foreach (int x in thing) 
msg = msg + x + "\n";
MessageBox.Show(msg, "Table");

最佳答案

改变这个:

foreach (int x in thing) 
msg = msg + x + "\n";
MessageBox.Show(msg, "Table");

收件人:

for (int i = 0; i < thing.GetLength(0); i++)
    msg += String.Format("{0}   {1}\n", thing[i, 0], thing[i, 1]);
    //msg += thing[i, 0] +  "  " +  thing[i, 1] + "\n";

MessageBox.Show(msg, "Table");

解释:

方法 GetLength(0) 返回我们的 x 的维度长度(它基本上类似于简单数组的 array.Length 但具有特定维度) 并且我们使用 i 变量和 for 循环来遍历它。在 y 中我们只有 2 个元素,所以我们可以只使用 [0][1] 索引,因为我们知道那里只有两个元素.这解释了这一行:

msg += thing[i, 0] +  "  " +  thing[i, 1] + "\n";

像这样连接字符串时要小心,就好像你不在你的数字之间添加这个空格 "" 编译器只会添加它们,所以像 [33, 10]< 这样的元素 将连接成如下字符串:"43\n" 而不是 "33 10\n"

附言 所以让我们使用 String.Format 方法来确保它的格式正确:

msg += String.Format("{0} {1}\n", thing[i, 0], thing[i, 1]);

关于c# - 在 MessageBox 中显示多维数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056850/

相关文章:

ios - 如何从 firebase 数据库中以字符串而不是字典的形式检索数据并将其添加到数组中?

arrays - 具有巨大多维数组的 malloc,无法用于神经科学模拟

java - 在 Java 中修剪二维数组的有效方法

c# - 如何按 python 和 C# 中的第二个元组元素对列表进行排序

java - 从单独的类定义和初始化数组

Java数组计算

c - 使用二维数组存储多个字符串

c# - 文件搜索功能的有效方法

c# - 如何使 SqlQuery<> 方法工作?

c# - 永远增加你得到-2147483648?