程序没有';t贯穿整个代码
本文关键字:代码 程序 | 更新日期: 2023-09-27 17:57:55
使用系统;使用System。集合。通用的
namespace MATRIX_algebra
{
public struct Struct_matrix
{
List<List<double>> entries;
public Struct_matrix(List<List<double>> values)
{
entries = values;
}
}
// public delegate void process_matrix(Struct_matrix matrix);
public class Matrix_init
{
public int size_C, size_R;
public void matrix_size()
{
Console.WriteLine("Enter the size of the matrix ");
Console.WriteLine("rows? ");
this.size_R = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("columns? ");
this.size_C = Convert.ToInt32(Console.ReadLine());
}
public List<List<double>> values = new List<List<double>>();
public void matrix_value()
{
for (int i = 0; i < this.size_R; i++)
{
Console.WriteLine("Enter the entries of the {0} row ",i+1);
for (int j = 0; j < this.size_C; j++)
{
values[i][j] = Convert.ToDouble(Console.ReadLine());
}
}
Struct_matrix matrix_init = new Struct_matrix(values);
}
}
}
namespace test
{
using MATRIX_algebra;
public class test_values
{
static void Main()
{
Matrix_init matrix1 = new Matrix_init();
for (int i = 0; i < matrix1.size_R; i++)
{
for (int j = 0; j < matrix1.size_C; j++)
{
Console.WriteLine(matrix1.values[i][j]);
}
}
}
}
}
我觉得这个问题很愚蠢,但我真的需要帮助,因为我只是的初学者
我不知道为什么当我运行这个程序时,它没有贯穿代码的某些部分。
我调试了它,Main()->实例化Matrix_init->publicList>values=newList>();->结束程序。
您需要一个构造函数将public void matrix_size()
更改为:
public Matrix_init()
{
Console.WriteLine("Enter the size of the matrix ");
Console.WriteLine("rows? ");
this.size_R = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("columns? ");
this.size_C = Convert.ToInt32(Console.ReadLine());
}
这个程序正在运行只是没有按预期工作。因为matrix_size()
方法从未被调用,所以size_R
和size_C
从未被赋值。它们将具有int的默认值,即zero,这就是为什么您的程序从不进入for
循环的原因。您也可以简单地调用matrix_size()
方法,而不是添加构造函数。
Matrix_init matrix1 = new Matrix_init();
matrix1.matrix_size();
然后调用matrix_value()
方法从用户那里获取输入并分配矩阵数组的值。记住,所有方法都需要调用,如果你不调用它们,它们将不会起任何作用。