程序没有';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>();->结束程序。

程序没有';t贯穿整个代码

您需要一个构造函数将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_Rsize_C从未被赋值。它们将具有int的默认值,即zero,这就是为什么您的程序从不进入for循环的原因。您也可以简单地调用matrix_size()方法,而不是添加构造函数。

Matrix_init matrix1 = new Matrix_init();
matrix1.matrix_size();

然后调用matrix_value()方法从用户那里获取输入并分配矩阵数组的值。记住,所有方法都需要调用,如果你不调用它们,它们将不会起任何作用。

相关文章: