从int[,]转换为double[]时c#出错 publicstaticdouble[]ConvertToDouble(int[,]arr,int r,int c) { double[]矩阵=新的double[r][c]; 对于(int i=0;i
,在使用矩阵之前,其元素必须初始化。您可以这样初始化元素:从int[,]转换为double[]时c#出错 publicstaticdouble[]ConvertToDouble(int[,]arr,int r,int c) { double[]矩阵=新的double[r][c]; 对于(int i=0;i,c#,matrix,type-conversion,C#,Matrix,Type Conversion,,在使用矩阵之前,其元素必须初始化。您可以这样初始化元素: public static double[][] ConvertToDouble(int[,] arr , int r , int c) { double[][] matrix = new double[r][c]; for(int i=0;i<r;i++) { for(int j=0;j<c;j++) {
public static double[][] ConvertToDouble(int[,] arr , int r , int c)
{
double[][] matrix = new double[r][c];
for(int i=0;i<r;i++)
{
for(int j=0;j<c;j++)
{
matrix[i][j] = Convert.ToDouble(arr[i,j]); //the error comes in this line
}
}
return matrix;
}
double[][]矩阵=新的double[r][];
对于(int i=0;i
完整代码:
double[][] matrix = new double[r][];
for (int i = 0; i < r; i++) {
matrix[i] = new double[c];
}
publicstaticdouble[]ConvertToDouble(int[,]arr,int r,int c){
双精度[]矩阵=新的双精度[r][];
对于(int i=0;i
请阅读此内容。您必须分阶段初始化
双[][]
。我们可以通过只添加一行代码并更改另一行代码来完成此操作:
public static double[][] ConvertToDouble (int[, ] arr, int r, int c) {
double[][] matrix = new double[r][];
for (int i = 0; i < r; i++) {
matrix[i] = new double[c];
}
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
matrix[i][j] = Convert.ToDouble (arr[i, j]);
}
}
return matrix;
}
您正在将int的null数组传递给您的方法。这是否回答了您的问题?不,我确定数组不是null此代码无法编译,矩阵[]初始化不正确。这也是NRE的可能原因。Google“c#initialize jagged array”获得成功。您应该1.使用下一个代码初始化矩阵:
double[]矩阵=新的双精度[r][];
;2.然后在第一个for循环内(在第二个循环之前)初始化矩阵的每一行:矩阵[i]=新的双精度[c];
。请参阅。
public static double[][] ConvertToDouble(int[,] arr , int r , int c)
{
double[][] matrix = new double[r][];
for(int i=0;i<r;i++)
{
matrix[i] = new double[c];
for(int j=0;j<c;j++)
{
matrix[i][j] = Convert.ToDouble(arr[i,j]); //the error comes in this line
}
}
return matrix;
}
public static double[][] ConvertToDouble(int[,] arr)
{
//GetUpperBound() returns the index of the last item, rather than the number of items
var r = arr.GetUpperBound(0) + 1;
var c = arr.GetUpperBound(1) + 1;
double[][] matrix = new double[r][];
for(int i=0;i<r;i++)
{
matrix[i] = new double[c];
for(int j=0;j<c;j++)
{
matrix[i][j] = Convert.ToDouble(arr[i,j]); //the error comes in this line
}
}
return matrix;
}