c# - 论点 1:无法从 'int[][]' 转换为 'int[*,*]'
问题描述
我正在尝试制作一个添加矩阵的行和列的应用程序。该应用程序背后的逻辑是您在文本框中输入矩阵的每一行,并用“/”分隔每一行。例如:1 2 3 4/1 2 3 4。我试图将值从字符串转换为整数,但我不断收到参数 1 错误。
编辑:忘记添加添加行的功能。
if (decision == 2)
{
string[] tokens = a.Split('/');
int[][] tokens1 = new int[][] {
tokens[0].Split(' ').Select(Int32.Parse).ToArray(),
tokens[1].Split(' ').Select(Int32.Parse).ToArray()
};
row_sum(tokens1, 2);
}
static void row_sum(int[,] arr, int orden)
{
int i, j, sum = 0;
// finding the row sum
for (i = 0; i < orden; ++i)
{
for (j = 0; j < orden; ++j)
{
// Add the element
sum = sum + arr[i, j];
}
// Print the row sum
Console.WriteLine("Sum of the row " +
i + " = " + sum);
// Reset the sum
sum = 0;
}
}
解决方案
您遇到的问题是您正在处理两种不同类型的数组:
tokens1
是一个锯齿状数组 (int[][]
):它是一个数组数组。子数组 attokens1[0]
可以是与数组 at 不同的长度tokens1[1]
。arr
是一个二维数组。尺寸是预定义的,第二个边界的长度永远不会基于第一个而改变。
有关二维数组与锯齿状数组的更多信息,请参见此处。
您的问题的解决方案是row_sum
接受与您正在创建的相同类型的数组,或创建与row_sum
接受相同类型的数组。
最简单的选择可能是row_sum
接受一个锯齿状数组:
static void row_sum(int[][] arr)
{
int i, j, sum = 0;
// finding the row sum
for (i = 0; i < arr.Length; ++i)
{
for (j = 0; j < arr[i].Length; ++j)
{
// Add the element
sum = sum + arr[i][j];
}
// Print the row sum
Console.WriteLine("Sum of the row " +
i + " = " + sum);
// Reset the sum
sum = 0;
}
}
我冒昧地删除了长度值,因为它不是必需的,因为可以从数组本身获取此信息。
推荐阅读
- r - Rscript readLines() 阻塞,直到置于后台模式
- sql - 从 SQL Server 中的 Oracle 数据库中检索数据
- powershell - Powershell 中的 New-Object -ComObject 和 VB 中的 CreateObject() 有什么区别?
- batch-file - 如何在命令行中粘贴(不使用快捷方式/鼠标)?
- java - itext DeviceGrey 与 Java 项目中的 setBackgroundColor 不兼容
- javascript - 使用包装类将每 2 个不同的元素包装在特定的 div 中
- java - 爪哇 | 类路径 | 找不到类
- oop - Pytorch tensor.method()与torch.method(张量)?
- node.js - 通过 Google OAuth2 使用用户和身份验证的 RESTful API?
- c# - 我可以使用普通目录列出方法列出 smb 共享中的文件吗?