2015-09-08 3 views
0

Я пытаюсь найти, сколько элементов в моем массиве строк, поэтому я могу добавить к этому массиву из первого пустого элемента.Поиск количества элементов в массиве строк

Вот что я пытался сделать:

int arrayLength = 0; 
string[] fullName = new string[50]; 

if (fullName.Length > 0) 
{ 
    arrayLength = fullName.Length - 1; 
} 

, а затем из этого относится к первому доступному пустому элементу, как:

fullName[arrayLength] = "Test"; 

Я могу также использовать это, чтобы увидеть, если массив заполнено или нет, но моя проблема: arrayLength всегда равна 49, поэтому мой код, кажется, подсчитывает размер всего массива, а не размер элементов, которые не пусты.

Cheers!

+0

Почему бы не использовать список? – PMerlet

+0

Что вы подразумеваете под «пустым», содержащим 'null'? –

+0

(Также длина вашего массива не равна 49, она равна 50, индексы от 0 до 49). Вы не должны использовать имя 'arrayLength', чтобы ссылаться на нечто иное, чем длина массива, или вы столкнетесь с ним позже и подумаете, что это то, что он имеет в виду. –

ответ

2

Вы можете использовать эту функцию для расчета длины массива.

private int countArray(string[] arr) 
{ 
    int res = arr.Length; 

    foreach (string item in arr) 
    { 
     if (String.IsNullOrEmpty(item)) 
     { 
      res -= 1; 
     } 
    } 

    return res; 
} 

EDIT: Для того, чтобы найти первый пустой элемент

private int firstEmpty(string[] arr) 
{ 
    int res = 0; 

    foreach (string item in arr) 
    { 
     if (String.IsNullOrEmpty(item)) 
     { 
      return res; 
     } 
     res++; 
    } 

    return -1; // Array is full 
} 
1

Я пытаюсь найти, сколько элементов в моем массиве строк,

array.Length 

так что я могу добавить к этому массиву из первого пустого элемента.

Array's не имеет пустых элементов; там всегда что-то есть, хотя это может быть null.

Вы можете обнаружить, что сканирование до тех пор, пока вы не нажмете нуль или не будете отслеживать каждый раз, когда вы добавляете новый элемент.

Если вы собираетесь добавлять новые элементы, используйте List<string>, у этого есть метод Add(), который будет делать то, что вы хотите для вас, а также изменять размер при необходимости и так далее.

Возможно, вы можете использовать список только для следующей части задачи, но если вам действительно нужен массив, у него есть метод ToArray(), который даст вам один.

0

Так что, если вы хотите использовать массив вместо списка вы все равно можете просто получить количество пустых элементов, как это:

int numberOfEmptyElements = fullName.Count(x => String.IsNullOrEmpty(x)); 
0

Попробуйте приведенный ниже код

string[] fullName = new string[50]; 

    fullName[0] = "Rihana"; 
    fullName[1] = "Ronaldo"; 

    int result = fullName.Count(i => i != null); 

в result у вас будет количество занятых позиций. В этом случае 2, заставляют заполнять 2 массива. Оттуда вы можете считать пустой. :)

Смежные вопросы