2016-09-21 82 views
0
string[] words; 
    numOfMatrix = int.Parse(fileIn.ReadLine()); 

    nameOfMatrix1 = fileIn.ReadLine(); 
    words = fileIn.ReadLine().Split(' '); 
    matrix1H = int.Parse(words[0]); 
    matrix1W = int.Parse(words[1]); 
    matrix1 = new int[matrix1H + 1, matrix1W + 1]; 
    for (int i = 1; i <= matrix1H; i++) 
    { 
    int k = 0; 
    words = fileIn.ReadLine().Split(' '); 
    for (int j = 1; j <= matrix1W; j++) 
    { 
     matrix1[i,j] = int.Parse(words[k]); 
     k++; 
    } 
    } 

輸入採樣數據解析字符串數組轉換成int矩陣

3 
Matrix One 
5 7 
45 38 5 56 18 34 4 
87 56 23 41 75 87 97 
45 97 86 7 6 8 85 
67 6 79 65 41 37 4 
7 76 57 68 8 78 2 
Matrix Two 
6 8 
45 38 5 56 18 34 4 30 
87 56 23 41 75 87 97 49 
45 97 86 7 6 8 85 77 
67 6 79 65 41 37 4 53 
7 76 57 68 8 78 2 14 
21 18 46 99 17 3 11 73 
Matrix Three 
6 6 
45 38 5 56 18 34 
87 56 23 41 75 87 
45 97 86 7 6 8 
67 6 79 65 41 37 
7 76 57 68 8 78 
21 18 46 99 17 3 

未處理的異常:System.FormatException:輸入字符串的不正確的格式。 在System.Number.StringToNumber(字符串str的NumberStyles選項,NumberBuffer &數的NumberFormatInfo信息,布爾parseDecimal) 在System.Number.ParseInt32(字符串s的NumberStyles風格的NumberFormatInfo信息) 在System.Int32.Parse(字符串s)

在我分析單詞[k]到matrix1 [i,j]的行上,我收到一條錯誤消息。解析工作正常,我第一次使用單詞[]但不是第二次我讀東西英寸

+0

什麼是輸入文件?你會得到什麼錯誤? –

+0

未處理的異常:System.FormatException:輸入字符串的格式不正確。 – MDub

+0

爲了清晰起見,你應該把你正在進入問題本身的錯誤信息。你也應該澄清一下,如果這個樣本數據是樣本輸出還是輸入? – leigero

回答

-2

問題是從內部循環讀取下一行。你需要讀一行而不是每個單元格。

var numOfMatrix = int.Parse(fileIn.ReadLine().Trim()); 
var matrices = new int[numOfMatrix][,]; 
for (var matrixNumber = 0; matrixNumber < numOfMatrix; matrixNumber++) 
{ 
    var nameOfMatrix1 = fileIn.ReadLine().Trim(); 
    var words = fileIn.ReadLine().Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 
    var matrix1H = int.Parse(words[0]); 
    var matrix1W = int.Parse(words[1]); 

    var matrix1 = matrices[matrixNumber] = new int[matrix1H, matrix1W];    
    // don't use <= 
    for (int i = 0; i < matrix1H; i++) 
    { 
     // read line line outside of the inner loop 
     words = fileIn.ReadLine().Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 
     // don't use <= 
     for (int j = 0; j < matrix1W; j++) 
     { 
      matrix1[i, j] = int.Parse(words[j]); 
     } 
    } 
} 
+0

我看到可能會影響事物的位置,但在運行我的程序時,我仍然在同一行發生同樣的錯誤。 – MDub

+0

你怎麼能確信這個答案是正確的,甚至不知道輸入數據是在OP的程序中。 – leigero

+0

,因爲如果他在他的機器上檢查「單詞[k]」時,他會看到它說'Matrix' –