2014-02-25 22 views
0

我有一個固定大小的50個元素的二維數組。我需要向用戶詢問一些值並將它們插入到數組中。問題是「我如何確保我不覆蓋那裏的任何東西?」查找數組中的下一個可用位置

有將已經當我啓動該程序在陣列中的一些內容,但我不知道有多少。我如何在數組中找到下一個可用的ID,在那裏插入我的內容而不覆蓋可能已經存在的任何內容?

我嘗試使用array.GetUpperBound和array.GetLength,但是它們返回固定值,無論有多少元素數組中已經。

使用數組,我不能使用列表或任何類似的東西。

我能做些什麼來找出陣列中的下一個「空閒」位置?

非常感謝您的幫助。

+1

這是一門功課的問題嗎?我們可以引導您找到解決方案,但直接爲您解答(即使存在多種可能的解決方法)也會對您造成不利影響。另外,你如何選擇要插入的索引? – Tejs

+2

值將在整個陣列中隨機出現?此外,什麼構成數組中的null值 - 0,'null',一個空字符串? –

回答

0

那麼,如果你正在使用Array,所有的值將包含默認值。例如,如果你有一個二維數組int像這樣:

var arr = new int[2, 3]; 

arr[1,2]將等於0這是默認爲int值。反正你可以定義一個擴展的方法來找到一個二維數組像這樣提供位置:

public static class MyExtensions 
{ 
    public static void FindAvailablePosition<T>(this T[,] source, out int x, out int y) 
    { 
     for (int i = 0; i < source.GetLength(0); i++) 
     { 
      for (int j = 0; j < source.GetLength(1); j++) 
      { 
       if (source[i, j].Equals(default(T))) 
       { 
        x = i; 
        y = j; 
        return; 
       } 
      } 
     } 

     x = -1; 
     y = -1; 
    } 
} 

,你可以使用這樣的:

var arr = new int[2, 3]; 
arr[0, 0] = 12; // for example 
int x, y; 
arr.FindAvailablePosition(out x,out y); 

// now x = 0, y = 1 
相關問題