使用System; 使用System.Collections.Generic;
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() - &gt;实例化Matrix_init - &gt; public List&gt; values = new List&gt;(); - &GT;结束该计划。
答案 0 :(得分:3)
您需要将构造函数更改为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的默认值 0 ,这就是你的程序永远不会进入for
循环的原因。而不是添加构造函数,你也可以简单地调用{{ 1}}方法。
matrix_size()
然后调用Matrix_init matrix1 = new Matrix_init();
matrix1.matrix_size();
方法获取用户的输入并分配矩阵数组的值。记住所有方法都需要调用,如果不调用它们,它们将不会执行任何操作。< / p>