该程序不会在整个代码中运行

时间:2014-04-12 02:43:16

标签: c#

使用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;结束该计划。

1 个答案:

答案 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_Rsize_C一个值。他们将拥有int的默认值 0 ,这就是你的程序永远不会进入for循环的原因。而不是添加构造函数,你也可以简单地调用{{ 1}}方法。

matrix_size()

然后调用Matrix_init matrix1 = new Matrix_init(); matrix1.matrix_size(); 方法获取用户的输入并分配矩阵数组的值。记住所有方法都需要调用,如果不调用它们,它们将不会执行任何操作。< / p>