2013-04-15 45 views
0

所以我有一個5乘6的二維數組(A)。從這個數組(A)我想返回一個基於用戶輸入的行和列的值。我至今...從行和列索引中查找數組中的值

private int FindValue(int[,] A, int row, int col) 
{ 
    richTextBox1.Clear(); 

    for (int i = 0; i < row; i++) 
    { 
     for (int j = 0; j < col; j++) 
     { 
      if (A[i, j] == A) 
      { 
       return A[i, j]; 
      } 
     } 
    } 

    return -1; 
} 

private void button3_Click(object sender, EventArgs e) 
{ 
    int row = int.Parse(textBox1.Text); 
    int col = int.Parse(textBox2.Text); 
} 
+0

問題不明。你想在數組中搜索一個項目並返回它的行/列值?或者你只是想看看數組是否包含一個項目?或者你只是想在[row,col]返回物品? –

+0

看來OP只是想在位置(行,列)的值:) – Vinay

+2

簡單的舊'返回A [row,col]''有什麼問題? – Nolonar

回答

2

真的不知道爲什麼被檢查

if (A[i, j] == A) 

相反,你可以簡單地返回:

private int FindValue(int[,] A, int row, int col) 
{ 
    if (row >= 0 && row < A.GetLength(0) && col >= 0 && col < A.GetLength(1)) 
     return A[row, col]; 
    else 
     return -1; 
} 
+1

+1不會破壞極限。 – Areks

+0

如果聲明是我試圖返回值的地方,我不知道該怎麼去做。感謝幫助! :) – Mannie

+0

@ user2122079,不客氣 – Habib

2

如果用戶輸入兩個rowcol,你並不需要搜索;沒有循環是必要的。你需要的是檢查輸入的座標數組對你的陣列的限制,並返回A[row,col]時,他們是正確的,或者-1時,他們錯了:

private int FindValue(int[,] A, int row, int col) { 
    if (row < 0 || row >= 5 || col < 0 || col >= 6) return -1; 
    return A[row, col]; 
} 

如果您在數組中尋找一個 (即用戶輸入X,你告訴他們rowcol),那麼你需要兩個循環,比較A[row,col]X,並返回rowcol回到用戶,如果你找到一個匹配。

+0

這就是我想要實現的。雖然我不知道如果我返回[row,col]它會返回值而不是座標。感謝您的幫助! – Mannie

1

更新:如果你想從A值[,]你不需要依次通過。 A[i,j]就足夠了。另外不要忘記數組索引從0開始。