2014-04-12 48 views
1

使用系統; using 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() - >實例化Matrix_init - >公共列表> values = new列表>(); - >結束程序。

+3

今後請拿出更好的標題;我們不應該打開這個問題來理解標題。 –

+3

由於您沒有調用它,因此它沒有運行。有方法是不夠的,你需要手動調用它們。我沒有看到任何地方對matrix_size或matrix_value的調用,你只是在創建類。 –

+1

注意:除非你明白你在做什麼*不要使用*'struct'。請檢查有關「結構與類」的問題,如http://stackoverflow.com/questions/1951186/which-is-best-for-data-store-struct-classes。 –

回答

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()); 
} 

,並將該軟件是運行只是它不工作作爲expected.Because matrix_size()方法不會被調用,因此size_Rsize_C從未分配到一個值。他們將有默認值爲int這是,這就是爲什麼你的程序永遠不會進入for循環。而不是添加構造函數,你也可以簡單地調用matrix_size()方法。

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

,然後調用matrix_value()方法從用戶輸入和分配所有方法必須打電話給你的矩陣array.Remember的值,如果你不給他們打電話,他們不會做任何事情。