c# - 我试图用 1 到 20 的乘法表填充 2d 20x20 数组
问题描述
到目前为止,我有,
int[,] array2d = new int[20, 20];
for (int i = 1; i < array2d.GetLength(0); i++)
{
for (int j = 1; j < array2d.GetLength(1); j++)
{
array2d[i, j] = i * j ;
Console.WriteLine(array2d[i, j]);
}
}
但这跳过了一些数字,我试图通过检查我是否是来修复它,<=
但这会抛出一个IndexOutOfRangeException
有没有什么地方我犯了重大错误?或者它是一个简单的。
解决方案
数组默认从零开始;所以你的数组是[0..19, 0..19]
;但是,您想要一个不同的范围:[1..20, 1..20]
. 我们不应该混合它们:要么(更好的选择)
int[,] array2d = new int[20, 20];
// i, j - array indexes
for (int i = 0; i < array2d.GetLength(0); i++)
{
for (int j = 0; j < array2d.GetLength(1); j++)
{
// since i, j are array indexes we multiply (i + 1) * (j + 1)
array2d[i, j] = (i + 1) * (j + 1);
Console.Write($"{array2d[i, j],3} ");
}
Console.WriteLine();
}
或者
int[,] array2d = new int[20, 20];
// i, j are values to be multiplied
for (int i = 1; i <= array2d.GetLength(0); i++)
{
for (int j = 1; j <= array2d.GetLength(1); j++)
{
// since i, j are values we have to compute array's indexes: i - 1, j - 1
array2d[i - 1, j - 1] = i * j;
Console.Write($"{array2d[i - 1, j - 1],3} ");
}
Console.WriteLine();
}
推荐阅读
- json - 连接字段(多类型索引错误) - Elasticsearch
- macos - 如何找到构建 macos/darwin 二进制缓存的 nixpkgs 修订版?
- javascript - Object.assign make duplicate when post a request
- python - 如何在python中编码不重复并排序?
- ios - Xcode 10,Command CodeSign 失败,退出代码为非零
- vba - Excel 宏 - 如何删除行号后的单元格值?
- angular - How to connect my sql data base in angular?
- selenium-webdriver - 如何使用特定的用户名和密码打开 IE,即使它没有使用 selenium Java 提示输入凭据
- haskell - Haskell 类型的类“Real”是用词不当吗?
- sql-server - 在创建插入两个表的存储过程方面需要帮助